#include <bits/stdc++.h>
using namespace std;
const int maxVal = 200005;
int arr[maxVal];
int tree[4 * maxVal];
void build(int node, int start, int endd, int k) {
  if (start == endd) {
    if (arr[start] >= k)
      tree[node] = 1;
    else
      tree[node] = 0;
  } else {
    int mid = (start + endd) / 2;
    build(2 * node, start, mid, k);
    build(2 * node + 1, mid + 1, endd, k);
    tree[node] = tree[2 * node] + tree[2 * node + 1];
  }
}
int query(int node, int start, int endd, int l, int r) {
  if (start > r || endd < l) {
    return 0;
  } else if (l <= start && endd <= r) {
    return tree[node];
  } else {
    int mid = (start + endd) / 2;
    int a1 = query(2 * node, start, mid, l, r);
    int a2 = query(2 * node + 1, mid + 1, endd, l, r);
    return a1 + a2;
  }
}
int main() {
  int n, m, k;
  cin >> n >> k >> m;
  int a, b;
  for (int i = 0; i < n; i++) {
    cin >> a >> b;
    arr[a]++;
    arr[b + 1]--;
  }
  for (int i = 1; i < maxVal; i++) {
    arr[i] = arr[i] + arr[i - 1];
  }
  build(1, 0, maxVal, k);
  for (int i = 0; i < m; i++) {
    cin >> a >> b;
    cout << query(1, 0, maxVal, a, b) << endl;
  }
}
