#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
int n,m1,m2;
struct p
{
int a,b;
}g[100001],w[100001],gn[100001],gw[100001];
bool cmp(p c,p d)
{
return c.a<d.a;
}
bool cmm(p c,p d)
{
return c.b<d.b;
}
int main()
{
cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);
cin >> n >> m1 >> m2;
if(n>=m1+m2)
{
cout << m1+m2;
return 0;
}
for(int i=1; i<=m1; i++)
{
cin >> g[i].a >> g[i].b;
}
for(int i=1; i<=m2; i++)
{
cin >> w[i].a >> w[i].b;
}
sort(g+1,g+m1+1,cmp);
sort(w+1,w+m2+1,cmp);
int nn1,nn2,maxx=0;
for(int i=0; i<=n; i++)
{
int j=n-i,c1=0,c2=0,l1=1,r1=1,l2=1,r2=1;
nn1=i,nn2=j;
if(nn1!=0)
{
gn[1]=g[1];
r1=2;
c1++;
nn1--;
for(int z=2; z<=m1; z++)
{
sort(gn+1,gn+c1+1,cmm);
p x=g[z],y=gn[l1];
if(y.b<x.a)
{
l1++;
nn1++;
}
if(nn1!=0)
{
gn[r1]=g[z];
c1++;
r1++;
nn1--;
}
}
}
if(nn2!=0)
{
gw[1]=w[1];
r2=2;
c2++;
nn2--;
for(int z=2; z<=m2; z++)
{
sort(gw+1,gw+c2+1,cmm);
p x=w[z],y=gw[l2];
if(y.b<x.a)
{
l2++;
nn2++;
}
if(nn2!=0)
{
gw[r2]=w[z];
c2++;
r2++;
nn2--;
}
}
}
maxx=max(maxx,c1+c2);
}
cout << maxx;
return 0;
}