// Alex Velea #include #include #include #include using namespace std; #define int64 long long const int kMaxN = 1e3+5; const int inf = 0x3f3f3f3f; bool skipped_day[kMaxN]; int dp[kMaxN]; int main() { int d, n, m; cin >> d >> n >> m; vector > segments; for (int i = 0; i < n; i += 1) { int x; cin >> x; skipped_day[x] = true; } for (int i = 0; i < m; i += 1) { int x, y; cin >> x >> y; segments.push_back({x, y}); } sort(segments.begin(), segments.end()); dp[0] = 0; for (int i = 1; i <= d; i += 1) { dp[i] = +inf; } for (auto itr : segments) { for (int d = itr.first - 1; d >= 0; d--) { if (1 + dp[d] < dp[itr.second]) { dp[itr.second] = 1 + dp[d]; } if (skipped_day[d]) { break; } } } int mn = +inf; for (int D = d; D >= 0; D--) { if (dp[D] < mn) { mn = dp[D]; } if (skipped_day[D]) { break; } } cout << mn << '\n'; return 0; }