#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000 + 10;
int N, M, K, res[maxn][maxn];
long long dist(pair<int, int> a, pair<int, int> b) {
  long long x = a.first - b.first;
  long long y = a.second - b.second;
  return x * x + y * y;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> N >> M >> K;
  vector<pair<int, int> > con(N);
  vector<vector<pair<long long, pair<long long, pair<int, int> > > > > A(N);
  vector<map<pair<long long, pair<int, int> >, int> > B(N);
  vector<pair<long long, pair<int, int> > > cir(M);
  for (int i = 0; i < N; i++) cin >> con[i].first >> con[i].second;
  for (int i = 0; i < M; i++)
    cin >> cir[i].first >> cir[i].second.first >> cir[i].second.second;
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < M; j++) {
      long long d = dist(con[i], cir[j].second);
      long long r = cir[j].first * 1ll * cir[j].first;
      if (d < r) {
        A[i].push_back({r - d, cir[j]});
      }
    }
  }
  for (int i = 0; i < N; i++) sort((A[i]).begin(), (A[i]).end());
  for (int i = 0; i < N; i++)
    for (int j = 0; j < (int)A[i].size(); j++) B[i].insert({A[i][j].second, j});
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      if (i == j)
        res[i][j] = 0;
      else {
        if (A[i].empty() || A[j].empty()) {
          res[i][j] = A[i].size() + A[j].size();
        } else {
          int ini = 0, fin = A[i].size();
          while (ini < fin) {
            int mit = (ini + fin) >> 1;
            if (B[j].find(A[i][mit].second) != B[j].end())
              fin = mit;
            else
              ini = mit + 1;
          }
          if (B[j].find(A[i][ini].second) == B[j].end())
            res[i][j] = A[i].size() + A[j].size();
          else {
            res[i][j] = B[i][A[i][ini].second] + B[j][A[i][ini].second];
          }
        }
      }
    }
  }
  while (K--) {
    int x, y;
    cin >> x >> y;
    x--;
    y--;
    cout << res[x][y] << '\n';
  }
  return 0;
}
