#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rep(i,n) for(ll i=0;i<n;++i)
#define INF (1ll<<60)
#define mod 1000000007
#define P pair<ll,ll>
#define Graph vector<vector<ll>>
#define fi first
#define se second
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }

vector<ll> sums,sumg;
void pre_process(vector<ll> &a,vector<ll> &s){//累積和のvector
    ll n=(ll)a.size();
    s.assign(n+1,0);
    for(ll i=0;i<n;i++){
        s[i+1]=s[i]+a[i];
    }
}

int main(){
    ll n,m,Q;cin>>n>>m>>Q;
    vector<P> pairs;

    rep(i,m){
        ll pf,ps;cin>>pf>>ps;
        pf--;ps--;
        pairs.push_back({pf,ps});
    }
    sort(pairs.begin(),pairs.end());

    vector<vector<ll>> list(510,vector<ll>(510)),sum(510);
    rep(i,m){
        list[pairs[i].fi+1][pairs[i].se]++;
    }
    rep(i,510){
        pre_process(list[i],sum[i]);
    }
/*
    rep(i,11){
        rep(j,11){
            cout<<sum[i][j]<<" ";
        }
        cout<<endl;
    }
*/
    rep(i,Q){
        ll p,q,ans=0;cin>>p>>q;
        for(ll i=p;i<=q;i++){
            ans+=sum[i][q];
        }
        cout<<ans<<endl;
    }
    return 0;
}
#include <bits/stdc++.h>
#define rep(i, n) for (ll i = 0; i < (ll)(n); ++i)
#define rep2(i, s, n) for (ll i = s; i < (ll)(n); i++)
#define repr(i, n) for (ll i = n; i >= 0; i--)
#define pb push_back
#define COUT(x) cout << (x) << endl
#define COUTF(x) cout << setprecision(15) << (x) << endl
#define ENDL cout << endl
#define DF(x) x.erase(x.begin())  // 先頭文字削除
#define ALL(x) x.begin(), x.end()
#define SORT(x) sort(ALL(x))
#define REVERSE(x) reverse(ALL(x))
#define init() \
  cin.tie(0);  \
  ios::sync_with_stdio(false)
#define debug(x) cerr << "[debug] " << #x << ": " << x << endl;
#define debugV(v)                       \
  cerr << "[debugV] " << #v << ":";     \
  rep(i, v.size()) cerr << " " << v[i]; \
  cerr << endl;
using namespace std;
using ll = long long;
using ld = long double;
using vll = vector<ll>;
using P = pair<ll, ll>;
constexpr ll INF = 0x3f3f3f3f3f3f3f3f;
constexpr ld PI = 3.141592653589793238462643383279;
ll get_digit(ll x) {
  return to_string(x).size();
}

ll gcd(ll x, ll y) {
  return y ? gcd(y, x % y) : x;
}

ll lcm(ll a, ll b) {
  return a / gcd(a, b) * b;
}

vector<P> factorize(ll n) {
  vector<P> result;
  for (ll i = 2; i * i <= n; ++i) {
    if (n % i == 0) {
      result.pb({i, 0});
      while (n % i == 0) {
        n /= i;
        result.back().second++;
      }
    }
  }
  if (n != 1) {
    result.pb({n, 1});
  }
  return result;
}

vll divisor(ll n) {
  vll ret;
  for (ll i = 1; i * i <= n; i++) {
    if (n % i == 0) {
      ret.push_back(i);
      if (i * i != n) ret.push_back(n / i);
    }
  }
  SORT(ret);
  return (ret);
}

template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}

signed main() {
  init();
  ll N, M, Q;
  cin >> N >> M >> Q;

  vector<vll> mat(N, vll(N, 0));
  rep(i, M) {
    ll l, r;
    cin >> l >> r;
    l--;
    r--;
    mat[l][r]++;
  }

  vector<vll> wa(N, vll(N, 0));
  rep(i, N) {
    rep(j, N) {
      if (i == 0 && j == 0) {
        wa[i][j] = mat[i][j];
        continue;
      }
      if (i == 0) {
        wa[i][j] = wa[i][j - 1] + mat[i][j];
        continue;
      }
      if (j == 0) {
        wa[i][j] = wa[i - 1][j] + mat[i][j];
        continue;
      }
      wa[i][j] = wa[i - 1][j] + wa[i][j - 1] - wa[i - 1][j - 1] + mat[i][j];
    }
  }

  rep(i, Q) {
    ll p, q;
    cin >> p >> q;
    p--;
    q--;

    if (p == 0 && q == 0) {
      COUT(wa[0][0]);
      continue;
    }

    if (p == 0) {
      COUT(wa[q][q]);
      continue;
    }

    ll a = wa[q][q];
    ll b = wa[q][p - 1];
    ll c = wa[p - 1][q];
    ll d = wa[p - 1][p - 1];
    ll ans = a - b - c + d;
    COUT(ans);
  }

  return 0;
}