#include using namespace std; #define LSOne(S) ((S) & -(S)) typedef long long ll; typedef vector vll; typedef vector vi; class FenwickTree { private: vll ft; public: FenwickTree(int m) { ft.assign(m + 1, 0); } ll rsq(int j) { ll sum = 0; for (; j; j-=LSOne(j)) { sum += ft[j]; } return sum; } ll rsq(int i, int j) { return rsq(j) - rsq(i - 1); } void update(int i, ll v) { for (; i < (int)ft.size(); i += LSOne(i)) { ft[i] += v; } } }; class RUPQ { private: FenwickTree ft; public: RUPQ(int m) : ft(FenwickTree(m)) {} void range_update(int ui, int uj, int v) { ft.update(ui, v); ft.update(uj+1, -v); } ll point_query(int i) { return ft.rsq(i); } }; int main() { int N, C, Q; scanf("%d %d %d", &N, &C, &Q); RUPQ rupq(100005); for (int i = 0; i < N; i++) { int a, b; scanf("%d %d", &a, &b); rupq.range_update(a, b, 1); } vector mt(C); for (int i = 0; i < C; i++) { scanf("%d", &mt[i]); } ll ans = 0; for (int i = 0; i < C; i++) { ans += rupq.point_query(mt[i]); } printf("%lld\n", (ll)N - ans); for (int i = 0; i < Q; i++) { int a, b; scanf("%d %d", &a, &b); ans -= rupq.point_query(a); ans += rupq.point_query(b); printf("%lld\n", (ll)N - ans); } return 0; }