#include #include #include #include #include #include #include #include #include using namespace std; const int N = 1005; int d, n, m; int a[N], dp[N]; pair seg[N]; int main() { cin >> d >> n >> m; for(int i = 0; i < n; ++i) cin >> a[i]; for(int i = 0; i < m; ++i) cin >> seg[i].first >> seg[i].second; sort(seg, seg + m); sort(a, a+n); memset(dp, -1, sizeof(dp)); dp[0] = 0; for(int i = 0; i < m; ++i) { int fs = d+1; for(int j = 0; j < n; ++j) if(a[j] >= seg[i].first && a[j] <= seg[i].second) fs = min(fs, j); if(fs == d+1) continue; int l = (fs == 0 ? 0 : a[fs-1]); for(int j = l; j < seg[i].first; ++j) if(dp[j] != -1) { if(dp[seg[i].second] == -1) dp[seg[i].second] = dp[j] + 1; dp[seg[i].second] = min(dp[seg[i].second], dp[j] + 1); } } int ans = 100500; for(int i = a[n-1]; i <= d; ++i) if(dp[i] != -1) ans = min(ans, dp[i]); cout << ans << endl; return 0; }