#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
struct node{
int ll,rr,w;
}cnt1[N],cnt2[N];
signed main(){
int L,n1,n2,l=1,r=1,p,q,ans=0;
scanf("%lld%lld%lld",&L,&n1,&n2);
for(int i=1;i<=n1;++i){
scanf("%lld%lld",&p,&q);
if(i==1)cnt1[i].ll=1;
else cnt1[i].ll=cnt1[i-1].rr+1;
cnt1[i].rr=cnt1[i].ll+q-1;
cnt1[i].w=p;
}
for(int i=1;i<=n2;++i){
scanf("%lld%lld",&p,&q);
if(i==1)cnt2[i].ll=1;
else cnt2[i].ll=cnt2[i-1].rr+1;
cnt2[i].rr=cnt2[i].ll+q-1;
cnt2[i].w=p;
}
// for(int i=1;i<=n1;++i)printf("%lld %lld %lld\n",cnt1[i].ll,cnt1[i].rr,cnt1[i].w);
// for(int i=1;i<=n2;++i)printf("%lld %lld %lld\n",cnt2[i].ll,cnt2[i].rr,cnt2[i].w);
while(l<=n1&&r<=n2){
bool bj=false;
node x=cnt1[l],y=cnt2[r];
if(x.ll>y.ll||(x.ll==y.ll&&x.rr>y.rr)){
swap(x,y);
bj=true;
}
if(x.rr>=y.ll&&x.w==y.w){
if(x.rr<=y.rr)ans+=x.rr-y.ll+1;
else ans+=y.rr-y.ll+1;
if(!bj)r++;
else l++;
}
else{
if(!bj)l++;
else r++;
}
}
printf("%lld",ans);
return 0;
}
rt,AC20,WA16