#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int D, n, m;
vector <int> E[1010];
bool sick[1010];
int best[1010];

int main()
{
    int i, j, x, st, dr;
    vector <int>::iterator it;
    std::ios_base::sync_with_stdio(false);
    cin >> D >> n >> m;
    for(i = 1; i <= n; ++i)
    {
        cin >> x;
        sick[x] = true;
    }
    for(i = 1; i <= m; ++i)
    {
        cin >> st >> dr;
        E[dr].push_back(st);
    }
    best[0] = 0;
    for(i = 1; i <= D; ++i)
        best[i] = 1000000000;
    for(i = 1; i <= D; ++i)
    {
        if(sick[i] == false)
            best[i] = best[i - 1];
        else
        {
            for(j = i; j <= D; ++j)
            {
                for(it = E[j].begin(); it != E[j].end(); ++it)
                {
                    if(*it <= i)
                        best[i] = min(best[i], best[*it - 1] + 1);
                }
            }
        }
    }
    cout << best[D] << "\n";
    return 0;
}