#include <iostream>
#include <vector>
#include <algorithm>

#define pe pair<int, int>
#define fi first
#define se second
#define mp make_pair

using namespace std;

const int MAX_N = 1010;

struct cmp {
    inline bool operator() (const pe &a, const pe &b) const {
        if(a.fi == b.fi) {
            return a.se > b.se;
        }
        return a.fi < b.fi;
    }
};

int d[MAX_N];

int s[MAX_N];

vector<int> A[MAX_N];

int main() {
    int D, n, m;
    cin >> D >> n >> m;
    for(int i = 1; i <= n; i++) {
        int a;
        cin >> a;
        s[a] = 1;
    }
    for(int  i = 1; i <= m; i++) {
        int a, b;
        cin >> a >> b;
        A[a].push_back(b);
    }
    
    for(int i = 1; i <= D + 1; i++) {
            d[i] = MAX_N;
    }

    d[1] = 0;

    for(int i = 1; i <= D; i++) {
            if(!s[i]) {
                d[i + 1] = min(d[i + 1], d[i]);
            }
            for(auto it : A[i]) {
                d[it + 1] = min(d[it + 1], d[i] + 1);
            }
        
    }

    cout << d[D + 1];
    
    return 0;
}