#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <string>
#define maxn 100010
using namespace std;
struct plane {
int arr;
int lea;
};
bool cmp(plane a, plane b) {
return a.arr < b.arr;
}
plane npla[maxn];
plane inpla[maxn];
int nation[maxn];
int innation[maxn];
int nn;
int in;
int n, m1, m2;
int ma = 0;
int main() {
cin >> n >> m1 >> m2;
for (int i = 1; i <= m1; i++) {
cin >> npla[i].arr >> npla[i].lea;
}
for (int i = 1; i <= m2; i++) {
cin >> inpla[i].arr >> inpla[i].lea;
}
sort(npla + 1, npla + m1 + 1, cmp);
sort(inpla + 1, inpla + m2 + 1, cmp);
for (int nn = 0, in = n - nn; nn <= n; nn++) {
int sum = 0;
for (int i = 1; i <= m1; i++) {
if (nation[npla[i].arr] >= nn) {
continue;
} else {
sum++;
for (int j = npla[i].arr; j <= npla[i].lea; j++) {
nation[j]++;
}
}
}
for (int i = 1; i <= m2; i++) {
if (innation[inpla[i].arr] >= in) {
continue;
} else {
sum++;
for (int j = inpla[i].arr; j <= inpla[i].lea; j++) {
innation[j]++;
}
}
}
ma = max(sum, ma);
memset(nation, 0, sizeof(nation));
memset(innation, 0, sizeof(innation));
}
cout << ma;
return 0;
}