#include <bits/stdc++.h>
using namespace std;
long long dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
long long ddx[8] = {1, 1, 0, -1, -1, -1, 0, 1},
          ddy[8] = {0, 1, 1, 1, 0, -1, -1, -1};
long long gcd(long long a, long long b) {
  if (!a) return b;
  return gcd(b % a, a);
}
long long lcm(long long a, long long b) { return (a * b) / gcd(a, b); }
struct comp {
  bool operator()(pair<long long, long long> a, pair<long long, long long> b) {
    if (a.second > b.second) {
      return 1;
    } else {
      return 0;
    }
  }
};
long long arr[200009];
void test_case() {
  long long n, k, q;
  cin >> n >> k >> q;
  for (long long i = 1; i <= n; i++) {
    long long l, r;
    cin >> l >> r;
    arr[l]++;
    arr[r + 1]--;
  }
  for (long long i = 1; i < 200009; i++) {
    arr[i] = arr[i - 1] + arr[i];
  }
  vector<long long> ok;
  for (long long i = 0; i < 200009; i++) {
    if (arr[i] >= k) {
      ok.push_back(i);
    }
  }
  for (long long i = 1; i <= q; i++) {
    long long l, r;
    cin >> l >> r;
    auto it = lower_bound(ok.begin(), ok.end(), l);
    auto ut = lower_bound(ok.begin(), ok.end(), r);
    if (ut == ok.end() || *ut > r) {
      ut--;
    }
    long long ans = 0;
    if (it != ok.end() && ut != ok.end() && *it >= l && *it <= r) {
      ans = ut - it + 1;
    }
    cout << ans << "\n";
  }
}
signed main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cout << fixed << setprecision(20);
  long long t = 1;
  while (t--) {
    test_case();
  }
}
