#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
namespace ljx_9420yy {
const int maxn = 1e5+5;
int ans, tot, n, m1, m2, s1[maxn], s2[maxn], cnt1[maxn], cnt2[maxn], t1[maxn], t2[maxn];
struct node {
int a, b, id;
} f1[maxn], f2[maxn];
bool cmp(node x, node y) {
if(x.a != y.a) return x.a < y.a;
else return x.b < y.b;
}
int main() {
cin>> n>> m1>> m2;
for(int i=1; i<=m1; i++) {
cin>> f1[i].a>> f1[i].b;
}
for(int i=1; i<=m2; i++) {
cin>> f2[i].a>> f2[i].b;
}
sort(f1+1, f1+1+m1, cmp);
sort(f2+1, f2+1+m2, cmp);
tot = m1;
for(int i=1; i<=n && tot != 0; i++) {
s1[i] = s1[i-1];
for(int j=1; j<=m1; j++) {
if(f1[j].id == 1) continue;
if(f1[j].a >= t1[i]) {
t1[i] = f1[j].b;
f1[j].id = 1;
cnt1[i]++;
tot--;
s1[i]++;
}
}
}
tot = m2;
for(int i=1; i<=n && tot != 0; i++) {
s2[i] = s2[i-1];
for(int j=1; j<=m2; j++) {
if(f2[j].id == 1) continue;
if(f2[j].a >= t2[i]) {
t2[i] = f2[j].b;
f2[j].id = 1;
cnt2[i]++;
tot--;
s2[i]++;
}
}
}
ans = n;
for(int i=0; i<=n; i++) {
ans = max(ans, s1[i]+s2[n]-s2[i]);
}
cout<< ans;
return 0;
}
}
int main() {
ljx_9420yy::main();
return 0;
}