#include<iostream>
#include<iomanip>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#include<cmath>
#include<map>
#include<queue>
#include<functional>
#include<vector>
using namespace std;
int m,n;
long long s;
long long Y = 0;
int w[200010], v[200010];
int l[200010], r[200010];
long long z[200010], e[200010];
bool check(int lp){
Y=0;
memset(z,0,sizeof(z));
memset(e,0,sizeof (e));
for(int i=1;i<=n;i++){
if(w[i]>=lp){
z[i]=z[i-1]+1;
e[i]=e[i-1]+v[i];
}
else{
z[i]=z[i-1];
e[i]=e[i-1];
}
}
for(int i=1;i<=m;i++){
int kl=l[i],kr=r[i];
Y+=(z[kr]-z[kl-1])*(e[kr]-e[kl-1]);
}
if(Y>s) return 1;
return 0;
}
int main(){
cin.tie(0);
cout.tie(0);
cin >> m >> n;
cin >> s;
for(int i = 1; i <= n; i++) cin >> w[i] >> v[i];
for(int i = 1; i <= m; i++) cin >> l[i] >> r[i];
int ll = 0;
int rr = 200010;
long long ans = s;
while(l <= r){
int mid = ll + (rr - ll) / 2;
if(check(mid)){
ll = mid + 1;
}
else{
rr = mid - 1;
}
ans=min(ans,llabs(Y-s));
}
cout << ans;
return 0;
}