#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define int long long
const ll N=1e6+10;
ll n,m,x;
struct node{
ll p,c;
}a[N];
bool cmp(node a1,node a2){
return a1.p<a2.p;
}
struct car{
ll num,id,flag,num2;
}c[N];
bool cmp2(car a1,car a2){
return a1.num-a1.num2>a2.num-a2.num2;
}
bool vis[N];
void solve(){
cin >> n >> m >> x;
for(int i=1;i<=n;i++){
cin >> a[i].p >> a[i].c;
}
for(int i=1;i<=m;i++){
cin >> c[i].num >> c[i].num2;
}
sort(a+1,a+1+n,cmp);
sort(c+1,c+1+m,cmp2);
ll ans=0;
for(int i=1,j=1;c[i].num>=c[i].num2;i++){
ans+=(c[i].num*a[j].p+c[i].num2*(x-a[j].p));
a[j].c--;
if(a[j].c==0) j++;
}
for(int i=m,j=n;c[i].num<c[i].num2;i--){
ans+=(c[i].num*a[j].p+c[i].num2*(x-a[j].p));
a[j].c--;
if(a[j].c==0) j--;
}
cout << 2*ans << endl;
return ;
}
ll T=1;
signed main(){
// cin >> T;
while(T--) solve();
return 0;
}
/*
3 4 10
1 1
2 1
8 3
5 3
7 2
9 0
1 10000
*/
0分,思路感觉和正解一样