#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
int n,m1,m2,sta1,sta2,num1,num2,ans;
int sum[100005];
struct node{
int begin;
int end;
}a[100005],b[100005];
bool cmp(node x,node y){
if(x.begin>y.begin) return x.begin<y.begin;
}
int main()
{
//freopen("airport.in","r",stdin);
//freopen("airport.out","w",stdout);
cin>>n>>m1>>m2;
for(int i=1;i<=m1;i++)cin>>a[i].begin>>a[i].end;
for(int i=1;i<=m2;i++)cin>>b[i].begin>>b[i].end;
sort(a+1,a+m1+1,cmp);
sort(b+1,b+m2+1,cmp);
//for(int i=1;i<=m1;i++)cout<<a[i].begin<<" "<<a[i].end<<endl;
for(int i=0;i<=n;i++)
{
memset(sum,0,sizeof(sum));
num1=0,num2=0;
sta1=0+i;
sta2=n-i;
for(int j=1;j<=m1;j++)
{
for(int k=sta1;k>=1;k--)
{
if(a[j].begin>=sum[k])
{
num1++;
sum[k]=a[j].end;
break;
}
}
}
memset(sum,0,sizeof(sum));
for(int j=1;j<=m2;j++)
{
for(int k=sta2;k>=1;k--)
{
if(b[j].begin>=sum[k])
{
num2++;
sum[k]=b[j].end;
break;
}
}
}
//cout<<num1<<" "<<num2<<" "<<i<<endl;
ans=max(ans,num1+num2);
}
cout<<ans<<" ";
return 0;
}
/*
4 3 5
2 34
43 78
3 4
11 22
21 22
24 90
1 3
25
*/