//没有什么是两个巴掌不能解决的,如果有那么就再来一个巴掌
//AC数量可以拉开你我的距离,但永远改变不了无比你帅的事实
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<string>
#include<algorithm>
//#include<ctime>
//#include<windows.h>
using namespace std;
int f1[10001000];
int f2[10001000];
int inx[100100];
int iny[100100];
int g1[100100];
int g2[100100];
int n;
int main(){
// freopen("airport.in","r",stdin);
// freopen("airport.out","w",stdout);
int m1,m2;
int maxn=0;
int a,b;
int ans=0;
int h=0;
cin>>n>>m1>>m2;
for(int i=1;i<=m1;i++){
scanf("%d %d",&a,&b);
f1[a]=i,f1[b]=0-i;
maxn=max(maxn,b);
}
a=0,b=0;
for(int i=1;i<=maxn;i++){
if(f1[i]>0){
a++;
for(int j=1;j<=a;j++){
if(g1[j]==0){
g1[j]=f1[i];
h=max(h,j);
inx[j]++;
break;
}
}
}
if(f1[i]<0){
for(int j=1;j<=a;j++){
if(g1[j]==0-f1[i]){
g1[j]=0;
break;
}
}
a--;
}
}
maxn=0;
for(int i=1;i<=m2;i++){
scanf("%d %d",&a,&b);
f2[a]=i,f2[b]=0-i;
maxn=max(maxn,b);
}
a=0,b=0;
for(int i=1;i<=maxn;i++){
if(f2[i]>0){
a++;
for(int j=1;j<=a;j++){
if(g2[j]==0){
g2[j]=f2[i];
h=max(h,j);
iny[j]++;
break;
}
}
}
if(f2[i]<0){
for(int j=1;j<=a;j++){
if(g2[j]==0-f2[i]){
g2[j]=0;
break;
}
}
a--;
}
}
for(int i=1;i<=h;i++){
iny[i]+=iny[i-1];
inx[i]+=inx[i-1];
}
for(int i=0;i<=n;i++){
int sum=inx[i]+iny[n-i];
ans=max(ans,sum);
}
cout<<ans;
/* cout<<endl;
for(int i=0;i<m1;i++){
cout<<inx[i]<<" ";
}
cout<<endl;
for(int i=0;i<m2;i++){
cout<<iny[i]<<" ";
}*/
// fclose(stdin);
// fclose(stdout);
return 0;
}