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