#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 7;
const int M = 47;
#define up(i,l,r) for(int i=l;i<=r;i++)
#define dn(i,l,r) for(int i=l;i>=r;i--)
long long n, m, g[N], s,vi[N],wi[N],li[N],ri[N],sv[N],sw[N];
long long ans=0,res=1e18;
inline long long judge(long long x) {
memset(sv,0,sizeof(sv));
memset(sw,0,sizeof(sw));
long long tot = 0, y = 0;
up(i, 1, n) {
if (wi[i] >= x) {
sw[i] = (sw[i - 1] + 1);
sv[i] = (sv[i - 1] + vi[i]);
}
else {
sw[i] = sw[i - 1];
sv[i] = sv[i - 1];
}
}
up(i, 1, m) {
y += (sw[ri[i]] - sw[li[i] - 1]) * (sv[ri[i]] - sv[li[i] - 1]);
}
if (y - s >= 0)return 0;
return 1;
}
int main() {
long long ans1, ans2;
cin >> n >> m >> s;
up(i,1,n) {
scanf("%lld%lld",&wi[i],&vi[i]);
}
up(i,1,m) {
scanf("%lld%lld",&li[i], &ri[i]);
}
long long l = 0, r = 1e6,mid;
while (l<=r) {
mid = (l + r) / 2;
if (judge(mid))r = mid - 1;
else l = mid + 1;
}
memset(sv, 0, sizeof(sv));
memset(sw, 0, sizeof(sw));
long long tot = 0, y = 0;
up(i, 1, n) {
if (wi[i] >= r) {
sw[i] = (sw[i - 1] + 1);
sv[i] = (sv[i - 1] + vi[i]);
}
else {
sw[i] = sw[i - 1];
sv[i] = sv[i - 1];
}
}
up(i, 1, m) {
y += (sw[ri[i]] - sw[li[i] - 1]) * (sv[ri[i]] - sv[li[i] - 1]);
}
ans = abs(y - s);
cout << ans;
}