#include <bits/stdc++.h>
using namespace std;
typedef struct {
  int x;
  int y;
  long long r;
} circle;
typedef struct {
  int x;
  int y;
} coord;
int N, M, K;
coord Points[1010];
circle lol[1010];
vector<int> v[1010];
inline int cmp(circle A, circle B) { return A.r < B.r; }
int Cuprins(int i, int j) {
  return ((1LL * lol[j].x - lol[i].x) * (lol[j].x - lol[i].x) +
              (1LL * lol[j].y - lol[i].y) * (lol[j].y - lol[i].y) <
          (1LL * lol[j].r - lol[i].r) * (lol[j].r - lol[i].r));
}
void Initializare() {
  cin >> N >> M >> K;
  for (int i = 0; i < N; i++) cin >> Points[i].x >> Points[i].y;
  for (int i = 0; i < M; i++) cin >> lol[i].r >> lol[i].x >> lol[i].y;
  sort(lol, lol + M, cmp);
  lol[M].x = 1;
  lol[M].y = 1;
  lol[M].r = 1LL * (1 << 31) * (1 << 31);
  int broken;
  for (int i = M - 1; i >= 0; i--) {
    broken = 0;
    for (int j = i + 1; j < M; j++) {
      if (Cuprins(i, j)) {
        v[j].push_back(i);
        v[i].push_back(j);
        broken = 1;
        break;
      }
    }
    if (!broken) {
      v[i].push_back(M);
      v[M].push_back(i);
    }
  }
}
int Dot[1010];
inline int Punct_cuprins(int i, int j) {
  return ((1LL * lol[j].x - Points[i].x) * (lol[j].x - Points[i].x) +
              (1LL * lol[j].y - Points[i].y) * (lol[j].y - Points[i].y) <
          lol[j].r * lol[j].r);
}
void Aflare_Puncte() {
  for (int i = 0; i < N; i++) {
    int broken = 0;
    for (int j = 0; j < M; j++) {
      if (Punct_cuprins(i, j)) {
        Dot[i] = j;
        broken = 1;
        break;
      }
    }
    if (!broken) Dot[i] = M;
  }
}
int dist[1010][1010];
bitset<1010> visited;
deque<int> Q;
void BFS(int i) {
  visited.reset();
  visited[i] = 1;
  Q.push_back(i);
  int a;
  while (!Q.empty()) {
    a = Q.front();
    Q.pop_front();
    for (int j = v[a].size() - 1; j >= 0; j--) {
      if (!visited[v[a][j]]) {
        visited[v[a][j]] = 1;
        Q.push_back(v[a][j]);
        dist[i][v[a][j]] = dist[i][a] + 1;
      }
    }
  }
}
void Business() {
  for (int i = 0; i <= M; i++) BFS(i);
  int a, b;
  for (int i = 0; i < K; i++) {
    cin >> a >> b;
    cout << dist[Dot[a - 1]][Dot[b - 1]] << "\n";
  }
}
int main() {
  Initializare();
  Aflare_Puncte();
  Business();
  return 0;
}
