#include <iostream>
#include <algorithm>
using namespace std;
struct plane{
int start,end;
}a[100010],b[100010];
int a2[100010],b2[100010];
int cmp(plane x,plane y)
{
return x.start<y.start;
}
int main()
{
int n,ans=0,m1,m2;
cin>>n>>m1>>m2;
a2[0]=0;b2[0]=0;
for(int i=0;i<m1;i++)
{
scanf("%d%d",&a[i].start,&a[i].end);
}
sort(a,a+m1,cmp);
for(int i=0;i<m2;i++)
{
scanf("%d%d",&b[i].start,&b[i].end);
}
sort(b,b+m2,cmp);
for(int j=1;j<n+1;j++){
int stoptime=1;
for(int i=0;i<m1;i++)
{
if(a[i].start&&stoptime<=a[i].start)
{
a2[j]++;
stoptime=a[i].end;
a[i].start=0;
}
}
a2[j]+=a2[j-1];
if(a2[j]==m1)break;
}
for(int j=1;j<n+1;j++){
int stoptime=1;
for(int i=0;i<m2;i++)
{
if(b[i].start&&stoptime<=b[i].start)
{
b2[j]++;
stoptime=b[i].end;
b[i].start=0;
}
}
b2[j]+=b2[j-1];
}
for(int i=0;i<n+1;i++){
ans=max(ans,a2[i]+b2[n-i]);
}
cout<<ans;
return 0;
}