#include #include #include #define pe pair #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 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; }