#include <bits/stdc++.h>
using namespace std;
struct node {
int ed, num;
};
node f1[100000 + 5], f2[100000 + 5];
struct plane {
int st, ed;
};
plane p1[100000 + 5], p2[100000 + 5];
bool cmp(plane a, plane b) {
return a.st < b.st;
}
int n, m1, m2,sum1[100005],sum2[100005];
int main() {
scanf("%d%d%d", &n, &m1, &m2);
int s, e;
for (int i = 1; i <= m1; i++) {
scanf("%d%d", &s, &e);
p1[i].st = s;
p1[i].ed = e;
}
}
for (int i = 1; i <= m2; i++) {
scanf("%d%d", &s, &e);
p2[i].st = s;
p2[i].ed = e;
}
sort(p1 + 1, p1 + m2 + 1, cmp);
for (int i = 1; i <= m1; i++) {
for (int j = 1; j <= n; j++) {
if (f1[j].ed < p1[i].st) {
f1[j].num++;
f1[j].ed = p1[i].ed;
break;
}
}
}
for (int i=1;i<=m2;i++){
for (int j=1;j<=n;j++){
if (f2[j].ed<p2[i].st){
f2[j].num++;
f2[j].ed=p2[i].ed;
break;
}
}
}
for (int i=1;i<=n;i++){
sum1[i]=sum1[i-1]+f1[i].num;
sum2[i]=sum2[i-1]+f2[i].num;
}
int ans=0;
for(int i=1;i<=n;i++){
ans=max(ans,sum1[i]+sum2[n-i]);
}
cout<<ans;
return 0;
}