#include <bits/stdc++.h>
using namespace std;
#define MAXN 200200
FILE *fin,*fout;
int n,m,i,j,max_n= -1,min_n=1e6;
int le[MAXN],ri[MAXN],nn[MAXN],v[MAXN];
long long pre_n[MAXN],pre_v[MAXN],s;
long long Y,sum,ans;
bool check(int w){
Y=0,sum=0;
memset(pre_n,0,sizeof(pre_n));
memset(pre_v,0,sizeof(pre_v));
for(j=1;j<=n;j++){
if(nn[j]>=w) {
pre_v[j]=pre_v[j-1]+v[j]; pre_n[j]=pre_n[j-1]+1;
}
else{
pre_v[j]=pre_v[j-1]; pre_n[j]=pre_n[j-1];
}
}
for(j=1;j<=m;j++){
Y+= (pre_n[ri[j]] - pre_n[le[j]-1]) * (pre_v[ri[j]] - pre_v[le[j]-1]);
}
sum= llabs(Y - s);
if(Y>s) return 1;
else return 0;
}
int main(){
fin=stdin;
fout=stdout;
fscanf(fin,"%d%d%lld",&n,&m,&s);
for(i=1;i<=n;i++){
fscanf(fin,"%d%d",&nn[i],&v[i]);
max_n=max(max_n,nn[i]);
min_n=min(min_n,nn[i]);
}
for(i=1;i<=m;i++){
fscanf(fin,"%d%d",&le[i],&ri[i]);
}
int l=min_n - 1,r=max_n + 2,mid;
ans = 1e6;
while(l<=r){
mid=(l+r)>>1;
if(check(mid))
{
l=mid+1; }
else {
r=mid-1;
}
if(sum<ans) {
ans=sum;}
}
fprintf(fout,"%lld",ans);
fclose(fin);fclose(fout);
return 0;
}