#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m1,m2,a1[100001],b1[100001],a2[100001],b2[100001];
int p1[100001],p2[100001],top1,top2,ans;
struct plane{
int l;int num;
friend bool operator<(plane a,plane b){
return a.l>b.l;
}
};
priority_queue<plane> q1,q2;
struct use_to_sort{
int a,b;
}us1[100001],us2[100001];
bool mycmp(use_to_sort a,use_to_sort b){
return a.a<b.a;
}
void st(){
for(int i=1;i<=m1;i++)us1[i].a=a1[i],us1[i].b=b1[i];
for(int i=1;i<=m2;i++)us2[i].a=a2[i],us2[i].b=b2[i];
sort(us1+1,us1+m1+1,mycmp);
sort(us2+1,us2+m2+1,mycmp);
for(int i=1;i<=m1;i++)a1[i]=us1[i].a,b1[i]=us1[i].b;
for(int i=1;i<=m2;i++)a2[i]=us2[i].a,b2[i]=us2[i].b;
}
signed main(){
freopen("airport3.in","r",stdin);
ios::sync_with_stdio(false);
cin>>n>>m1>>m2;
for(int i=1;i<=m1;i++)cin>>a1[i]>>b1[i];
for(int i=1;i<=m2;i++)cin>>a2[i]>>b2[i];
st();
for(int i=1;i<=m1;i++){
if(q1.empty()||q1.top().l>a1[i])p1[++top1]++,q1.push({b1[i],top1});
else p1[q1.top().num]++,q1.push({b1[i],q1.top().num}),q1.pop();
}
for(int i=1;i<=m2;i++){
if(q2.empty()||q2.top().l>a2[i])p2[++top2]++,q2.push({b2[i],top2});
else p2[q2.top().num]++,q2.push({b2[i],q2.top().num}),q2.pop();
}
for(int i=1;i<=max(m1,n);i++)p1[i]+=p1[i-1];
for(int i=1;i<=max(m2,n);i++)p2[i]+=p2[i-1];
for(int i=0;i<=n;i++){
ans=max(ans,p1[n-i]+p2[i]);
}
cout<<ans;
}