/**************************************************************** 
 * Description: 用到优先队列，45分
 * Author: Alex Li
 * Date: 2024-08-04 18:05:34
 * LastEditTime: 2024-08-18 13:21:54
****************************************************************/
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

struct airTime {
    int b; // 到达时间
    int e; // 离开时间
};

// 比较函数，用于按起飞时间排序
bool compare(airTime a, airTime b) {
    return a.b < b.b;
}

// 定义比较结束时间的仿函数，用于优先队列
struct CompareEndTime {
    bool operator()(const airTime& a, const airTime& b) {
        return a.e > b.e; // 基于降落时间的最小堆
    }
};

// 计算可以使用指定数量登机口的最大航班数
int countFlights(vector<airTime>& flights, int gates) {
    // 如果没有登机口，则无法处理任何航班
    if (gates == 0) return 0;
    
    // 定义一个优先队列，基于降落时间构建最小堆
    priority_queue<airTime, vector<airTime>, CompareEndTime> pq;
    int count = 0; // 记录能够处理的航班数
    
    // 遍历所有航班
    for (const auto& flight : flights) {
        // 如果当前使用的登机口数量小于可用登机口数量，则直接分配一个新的登机口
        if (pq.size() < gates) {
            pq.push(flight); // 将当前航班加入优先队列
            count++; // 计数器加一
        }
        // 否则，检查当前航班能否使用最早空闲的登机口
        else if (flight.b > pq.top().e) {
            pq.pop(); // 移除最早空闲的登机口（已经降落的航班）
            pq.push(flight); // 分配登机口给当前航班
            count++; // 计数器加一
        }
    }
    
    return count; // 返回能够处理的最大航班数
}

int main() {
    int n, dom, inte;
    cin >> n >> dom >> inte;
    
    vector<airTime> airTimeDom(dom);
    vector<airTime> airTimeInte(inte);
    
    for (int i = 0; i < dom; ++i) {
        cin >> airTimeDom[i].b >> airTimeDom[i].e;
    }

    
    for (int i = 0; i < inte; ++i) {
        cin >> airTimeInte[i].b >> airTimeInte[i].e;
    }
    
    sort(airTimeDom.begin(), airTimeDom.end(), compare);
    sort(airTimeInte.begin(), airTimeInte.end(), compare);
    
    int anss = 0; // total number of flights
    for (int i = 0; i <= n; ++i) { // n+1 combinations
        int ansd = countFlights(airTimeDom, i);
        int ansi = countFlights(airTimeInte, n - i);
        anss = max(anss, ansd + ansi);
    }
    
    cout << anss;
    return 0;
}


    
    