#include<bits/stdc++.h>
using namespace std;
long long n,m,sum,cnt,pam,m1,maxx;
struct sb{
int ks,js,sy;
}a[100001];
struct node{
int dd,lk,y;
}b[100001];
int sb(int x,int y)
{
int tent=0,md=0,g=1,h=1,hop=0x7ffff,cap=0x7ffff,sm[100001]={0},ms[100001]={0};
hop=a[g].js;
a[1].sy=1;
for(int i=2;i<=m;i++)
{
if(a[i].ks<hop&&g<x)
{
g++;
hop=a[i].js;
a[i].sy=1;
}
if(a[i].ks>=hop){
hop=a[i].js;
a[i].sy=1;
}
}
cout<<endl;
b[1].y=1;
ms[cap]=a[h].js;
for(int i=2;i<=m1;i++)
{
if(b[i].dd<cap&&h<y)
{
h++;
cap=b[i].lk;
b[i].y=1;
}
if(b[i].dd>=cap){
cap=b[i].lk;
b[i].y=1;
}
}
for(int i=1;i<=m;i++)
{
if(a[i].sy==1)
tent++;
}
for(int i=1;i<=m1;i++)
{
if(b[i].y==1)
md++;
}
if(x==0)
{
tent=0;
}
if(y==0)
{
md=0;
}
return (tent+md);
}
int main()
{
scanf("%d%d%d",&n,&m,&m1);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&a[i].ks,&a[i].js);
}
for(int i=1;i<=m1;i++)
{
scanf("%d%d",&b[i].dd,&b[i].lk);
}
for(int i=0;i<=n;i++)
{
cnt=i;
pam=n-i;
maxx=sb(cnt,pam);
sum=max(maxx,sum);
}
printf("%d",sum);
}