#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+10;
struct node{
ll st,ed;
};
node p1[N],p2[N];
ll n,m,m1,m2,ans,f1[N],f2[N],s1[N],s2[N];
bool cmp(node a,node b){
return a.st<b.st;
}
int main(){
cin>>n>>m1>>m2;
for(int i=1;i<=m1;i++){
cin>>p1[i].st>>p1[i].ed;
}
for(int i=1;i<=m2;i++){
cin>>p2[i].st>>p2[i].ed;
}
sort(p1+1,p1+m1+1,cmp);
sort(p2+1,p2+m2+1,cmp);
priority_queue<ll,vector<ll>,greater<ll> >q;
for(int i=1;i<=m1;i++){
if(!q.empty()&&p1[i].st>q.top()){
q.pop();
q.push(p1[i].ed);
}
else{
q.push(p1[i].ed);
}
f1[q.size()]++;
}
priority_queue<ll,vector<ll>,greater<ll> >p;
for(int i=1;i<=m2;i++){
if(!p.empty()&&p2[i].st>p.top()){
p.pop();
p.push(p2[i].ed);
}
else{
p.push(p2[i].ed);
}
f2[p.size()]++;
}
for(int i=2;i<=n;i++){
f1[i]=f1[i-1]+f1[i];
f2[i]=f2[i-1]+f2[i];
}
for(int i=0;i<=n;i++) ans=max(ans,f1[i]+f2[n-i]);
cout<<ans;
return 0;
}