#include <iostream>
#include <algorithm>
using namespace std;

struct Interval {
    int x, y;
    bool operator < (Interval A) const {
        return x < A.x || (x == A.x && y < A.y);
    }
};

int D, N, M;
int z[1004];
Interval a[1004];

int main() {
    cin >> D >> N >> M;
    for (int i = 1; i <= N; i++)
        cin >> z[i];
    sort(z + 1, z + N + 1);
    for (int i = 1; i <= M; i++)
        cin >> a[i].x >> a[i].y;
    sort(a + 1, a + M + 1);
    Interval c;
    int nrz, nrd;
    int dmin = 10000;
    for (int i = 1; i < M; i++) {
        c = a[i];
        nrz = 0;
        nrd = 1;
        for (int j = 1; j <= N; j++)
            if (z[j] >= c.x && z[j] <= c.y) nrz++;
        for (int j = i + 1; j <= M; j++) {
            if (c.y >= a[j].x) continue;
            else {
                c = a[j];
                nrd++;
                for (int k = 1; k <= N; k++)
                    if (z[k] >= c.x && z[k] <= c.y) nrz++;
            }

        }
        if (nrz == N) dmin = min(dmin, nrd);
    }
    cout << nrd;
    return 0;
}