#include <bits/stdc++.h>
using namespace std;
int n,m1,m2,ans,cnt;
struct node{
int a,b;
bool operator<(const node &i)const{
return a<i.a;
}
}a[100010],b[100010];
multiset<int> ed;
int solve(int x,int m,node c[])
{
ed.clear();
cnt=0;
int sum=0;
if(x>0)
{
for(int i=1;i<=m;i++)
{
bool flag=0;
if(!ed.empty())
{
int cur=*ed.begin();
if(cur<c[i].a)
{
ed.erase(cur);
ed.insert(c[i].b),flag=1,sum++;
}
}
if(flag==0 && x>cnt)
ed.insert(c[i].b),sum++,cnt++;
}
}
return sum;
}
int main()
{
scanf("%d%d%d",&n,&m1,&m2);
for(int i=1;i<=m1;i++)
scanf("%d%d",&a[i].a,&a[i].b);
for(int i=1;i<=m2;i++)
scanf("%d%d",&b[i].a,&b[i].b);
sort(a+1,a+m1+1),sort(b+1,b+m2+1);
for(int i=0;i<=n;i++)
ans=max(ans,solve(i,m1,a)+solve(n-i,m2,b));
printf("%d\n",ans);
return 0;
}