#include<cstdio>
#include<algorithm>
#define N 100005
using namespace std;
struct p{
int a,b;
int len=b-a+1;
}d[N],e[N];
int n,m1,m2,ans,sa1,sb1,sa2,sb2,al1,al2,k1,k2;
bool cmp(p a,p b){
if(a.b-a.a+1==b.b-b.a+1)return a.a<b.a;
return (a.b-a.a+1)<(b.b-b.a+1);
}
bool check(int a,int b){
if((sa2-sa1+1)==(b-a+1))al1++;
if((sa2-sa1+1)<(b-a+1))al1=0;
return (sa2-sa1+1)<(b-a+1);
}
bool cxk(int a,int b){
if((sb2-sb1+1)==(b-a+1))al2++;
if((sb2-sb1+1)<(b-a+1))al2=0;
return (sb2-sb1+1)<(b-a+1);
}
signed main(){
scanf("%d%d%d",&n,&m1,&m2);
for(int i=1;i<=m1;i++){
scanf("%d%d",&d[i].a,&d[i].b);
int a=d[i].a,b=d[i].b,c=d[i-1].a,e=d[i-1].b;
if(a>=c&&b<=e){
if(check(a,b))sa1=a,sa2=b;
}
if(a<=c&&b>=e){
if(check(c,e))sa1=c,sa2=e;
}
if(a<c&&b>c&&b<e){
if(check(c,b))sa1=c,sa2=b;
}
if(a>c&&a<e&&b>e){
if(check(a,e))sa1=a,sa2=e;
}
}
for(int i=1;i<=m2;i++){
scanf("%d%d",&e[i].a,&e[i].b);
int a=e[i].a,b=e[i].b,c=e[i-1].a,d=e[i-1].b;
if(a>=c&&b<=d){
if(cxk(a,b))sb1=a,sb2=b;
}
if(a<=c&&b>=d){
if(cxk(c,d))sb1=c,sb2=d;
}
if(a<c&&b>c&&b<d){
if(check(c,b))sb1=c,sb2=b;
}
if(a>c&&a<d&&b>d){
if(check(a,d))sb1=a,sb2=d;
}
}
k1=sa2-sa1+1,k2=sb2-sb1+1;
for(int i=0;i<=n;i++){
ans=max(ans,m2+m1-k1-k2);
}
printf("%d",ans);
return 0;
}