#include<bits/stdc++.h>
using namespace std;
struct code{
int g,q;
};
typedef pair<int,int> PII;
code a[200010];
code b[200010];
vector<int> plane1(200010,0),plane2(200010,0);
int n;
int cmp(code a,code b){
return a.g<b.g;
}
void js(code *a,int &len,vector<int> &plane){
priority_queue<PII,vector<PII>,greater<PII> > a1;
priority_queue<int,vector<int>,greater<int> > b1;
for(int i=1;i<=n;i++) b1.push(i);
for(int i=1;i<=len;i++){
if(!a1.empty() && a[i].g>=a1.top().first){
b1.push(a1.top().second);
a1.pop();
}
if(b1.empty()) continue;
int now=b1.top();
b1.pop();
plane[now]++;
a1.push(make_pair(a[i].q,now));
}
for(int i=1;i<=n;i++) plane[i]+=plane[i-1];
}
int main(){
int m1,m2;
int cnt=0;
int max1=0;
cin>>n>>m1>>m2;
for(int i=1;i<=m1;i++) cin>>a[i].g>>a[i].q;
for(int i=1;i<=m2;i++) cin>>b[i].g>>b[i].q;
sort(a+1,a+m1+1,cmp);
sort(b+1,b+m2+1,cmp);
js(a,m1,plane1);
js(b,m2,plane2);
int ans=0;
for(int i=0;i<=n;i++)
ans=max(ans,plane1[i]+plane2[n-i]);
cout<<ans<<endl;
return 0;
}