#include <iostream>
#include <algorithm>
#include <vector>
#define NMAX 1005

using namespace std;

int i, n, m, k, j, l, p, ans = 0, v[NMAX], z, st, dr, used = 0, curr = 1, c;

struct b
{
    int x, y;
}a[NMAX];

bool cmp(b a, b aa)
{
    if (a.x == aa.x)
        return a.y < aa.y;
    return a.x < aa.x;
}

int main()
{
    cin >> z >> n >> m;

    for (i = 1; i <= n; ++ i)
        cin >> v[i];

    for (i = 1; i <= m; ++ i)
        cin >> a[i].x >> a[i].y;

    sort(v + 1, v + n + 1);
    sort(a + 1, a + m + 1, cmp);

 //   for (i = 1; i <= m; ++ i)
     //   cout << a[i].x << " " << a[i].y << '\n';

    while (used < n)
    {
        c = 1;
        for (i = c; i <= m && v[curr] <= a[i].y; ++ i)
            if (v[curr] >= a[i].x && v[curr] <= a[i].y)
                for (j = curr + 1; j <= n && v[j] <= a[i].y; ++ j)
                    c = max(c, j - curr + 1);
        ans ++;
        used += c;
        curr = j + 1;
        c = i + 1;
    }

    cout << ans;
    return 0;
}