#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
int a1[100000],b1[100000],a2[100000],b2[100000];
int out1[100000],out2[100000];
int m,m1,m2,ans1=0,ans2=0,ans=0;
void find1(int x,int y,int k1){
for(int i=1;i<=k1;i++)
{
if(out1[i]<=x)
{
out1[i]=y;
ans1=ans1+1;
return;
}
}
}
void find2(int x,int y,int k2){
for(int i=1;i<=k2;i++)
{
if(out2[i]<=x)
{
out2[i]=y;
ans2=ans2+1;
return;
}
}
}
void zz1(int x,int y,int z){
for(int i=0;i<z;i++){
if(x<a1[i]){
a1[z]=a1[i];
b1[z]=b1[i];
a1[i]=x;
b1[i]=y;
zz1(a1[z],b1[z],z);
}
}
}
void zz2(int x,int y,int z){
for(int i=0;i<z;i++){
if(x<a2[i]){
a2[z]=a2[i];
b2[z]=b2[i];
a2[i]=x;
b2[i]=y;
zz2(a2[z],b2[z],z);
}
}
}
int main(){
scanf("%d%d%d",&m,&m1,&m2);
for(int i=0;i<m1;i++)
{
scanf("%d%d",&a1[i],&b1[i]);
zz1(a1[i],b1[i],i);
}
for(int i=0;i<m2;i++)
{
scanf("%d%d",&a2[i],&b2[i]);
zz2(a2[i],b2[i],i);
}
int k1=m,k2=0;
for(int i=0;i<=m;i++)
{
memset(out1,0,sizeof(out1));
memset(out2,0,sizeof(out2));
for(int j=0;j<m1;j++)
{
find1(a1[j],b1[j],k1);
}
for(int j=0;j<m2;j++)
{
find2(a2[j],b2[j],k2);
}
k1=k1-1;
k2=k2+1;
ans=max(ans,ans1+ans2);
ans1=0;
ans2=0;
}
printf("%d",ans);
return 0;
}
不知道为什么错了