#include<bits/stdc++.h>
using namespace std;
int n,m1,m2,p,q,s,ans,v,c[100005];
struct z{
int a1,a2;
}a[100005];
struct t{
int b1,b2;
}b[100005];
int x(z h,z l){
return h.a1<l.a1||h.a1==l.a1&&h.a2<l.a2;
}
int y(t h,t l){
return h.b1<l.b1||h.b1==l.b1&&h.b2<l.b2;
}
int main(){
//freopen("airport.in","r",stdin);
//freopen("airport.out","w",stdout);
cin>>n>>m1>>m2;
for(int i=1;i<=m1;i++)
scanf("%d%d",&a[i].a1,&a[i].a2);
for(int i=1;i<=m2;i++)
scanf("%d%d",&b[i].b1,&b[i].b2);
sort(a+1,a+m1+1,x);
sort(b+1,b+m2+1,y);
for(int i=0;i<=n;i++)
{
p=i,q=n-i;
s=0;
for(int j=1;j<=v;j++)c[j]=0;
v=0;
for(int j=1;j<=m1;j++)
{
for(int k=1;k<=v;k++)
if(c[k]>0&&a[c[k]].a2<=a[j].a1)
c[k]=0,p++;
if(p>0)s++,p--,c[++v]=j;
}
for(int j=1;j<=v;j++)c[j]=0;
v=0;
for(int j=1;j<=m2;j++)
{
for(int k=1;k<=v;k++)
if(c[k]>0&&b[c[k]].b2<=b[j].b1)
c[k]=0,q++;
if(q>0)s++,q--,c[++v]=j;
}
ans=max(s,ans);
}
cout<<ans;
return 0;
}