#include <bits/stdc++.h>
using namespace std;
int tree[800005];
int lazy[800005];
int arr[200005];
int final[200005];
void updateRangeUtil(int si, int ss, int se, int us, int ue, int diff) {
  if (lazy[si] != 0) {
    tree[si] += (se - ss + 1) * lazy[si];
    if (ss != se) {
      lazy[si * 2 + 1] += lazy[si];
      lazy[si * 2 + 2] += lazy[si];
    }
    lazy[si] = 0;
  }
  if (ss > se || ss > ue || se < us) return;
  if (ss >= us && se <= ue) {
    tree[si] += (se - ss + 1) * diff;
    if (ss != se) {
      lazy[si * 2 + 1] += diff;
      lazy[si * 2 + 2] += diff;
    }
    return;
  }
  int mid = (ss + se) / 2;
  updateRangeUtil(si * 2 + 1, ss, mid, us, ue, diff);
  updateRangeUtil(si * 2 + 2, mid + 1, se, us, ue, diff);
  tree[si] = tree[si * 2 + 1] + tree[si * 2 + 2];
}
void updateRange(int n, int us, int ue, int diff) {
  updateRangeUtil(0, 0, n - 1, us, ue, diff);
}
int getSumUtil(int ss, int se, int qs, int qe, int si) {
  if (lazy[si] != 0) {
    tree[si] += (se - ss + 1) * lazy[si];
    if (ss != se) {
      lazy[si * 2 + 1] += lazy[si];
      lazy[si * 2 + 2] += lazy[si];
    }
    lazy[si] = 0;
  }
  if (ss > se || ss > qe || se < qs) return 0;
  if (ss >= qs && se <= qe) return tree[si];
  int mid = (ss + se) / 2;
  return getSumUtil(ss, mid, qs, qe, 2 * si + 1) +
         getSumUtil(mid + 1, se, qs, qe, 2 * si + 2);
}
int getSum(int n, int qs, int qe) {
  if (qs < 0 || qe > n - 1 || qs > qe) {
    return -1;
  }
  return getSumUtil(0, n - 1, qs, qe, 0);
}
void constructSTUtil(int arr[], int ss, int se, int si) {
  if (ss > se) return;
  if (ss == se) {
    tree[si] = arr[ss];
    return;
  }
  int mid = (ss + se) / 2;
  constructSTUtil(arr, ss, mid, si * 2 + 1);
  constructSTUtil(arr, mid + 1, se, si * 2 + 2);
  tree[si] = tree[si * 2 + 1] + tree[si * 2 + 2];
}
void constructST(int arr[], int n) { constructSTUtil(arr, 0, n - 1, 0); }
int main() {
  long long l, r, n, k, q, i, a, b, haha;
  haha = 0;
  cin >> n >> k >> q;
  for (i = 0; i < 200005; i++) arr[i] = 0;
  constructST(arr, 200005);
  for (i = 0; i < n; i++) {
    cin >> l >> r;
    updateRange(200005, l, r, 1);
  }
  for (i = 0; i < 200005; i++) {
    if (getSum(200005, i, i) >= k) {
      haha += 1;
    }
    final[i] = haha;
  }
  while (q--) {
    cin >> a >> b;
    cout << final[b] - final[a - 1] << endl;
  }
  return 0;
}
