#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1111;
int N, C, Q;
int PointX[NMAX], PointY[NMAX];
int CircleX[NMAX], CircleY[NMAX], Radius[NMAX];
int Index[NMAX];
int Deg[NMAX];
int D[NMAX][NMAX];
bool Inside[NMAX][NMAX];
vector<int> Graph[NMAX];
bool CheckCircle(int id1, int id2) {
  return (CircleX[id1] - CircleX[id2]) * 1ll * (CircleX[id1] - CircleX[id2]) +
                 (CircleY[id1] - CircleY[id2]) * 1ll *
                     (CircleY[id1] - CircleY[id2]) <=
             Radius[id2] * 1ll * Radius[id2] &&
         Radius[id1] < Radius[id2];
};
bool CheckPoint(int id1, int id2) {
  return (PointX[id1] - CircleX[id2]) * 1ll * (PointX[id1] - CircleX[id2]) +
             (PointY[id1] - CircleY[id2]) * 1ll *
                 (PointY[id1] - CircleY[id2]) <=
         Radius[id2] * 1ll * Radius[id2];
};
int main() {
  scanf("%d %d %d", &N, &C, &Q);
  for (int i = 0; i < N; i++) scanf("%d %d", &PointX[i], &PointY[i]);
  Radius[0] = 2e9;
  C++;
  for (int i = 1; i < C; i++)
    scanf("%d %d %d", &Radius[i], &CircleX[i], &CircleY[i]);
  for (int i = 0; i < C; i++)
    for (int j = 0; j < C; j++)
      if (i != j && CheckCircle(i, j)) {
        ++Deg[i];
        Inside[i][j] = true;
      };
  for (int i = 1; i < C; i++) {
    int MaxGoID = -1;
    for (int j = 0; j < C; j++)
      if (Inside[i][j] && (MaxGoID == -1 || Deg[MaxGoID] < Deg[j])) MaxGoID = j;
    Graph[i].push_back(MaxGoID);
    Graph[MaxGoID].push_back(i);
  };
  for (int i = 0; i < N; i++) {
    int MinGoID = -1;
    for (int j = 0; j < C; j++)
      if (CheckPoint(i, j) && (MinGoID == -1 || Deg[MinGoID] < Deg[j]))
        MinGoID = j;
    Index[i] = MinGoID;
  };
  for (int i = 0; i < C; i++) {
    queue<int> q;
    q.push(i);
    for (int j = 0; j < C; j++) D[i][j] = 2e9;
    D[i][i] = 0;
    while (!q.empty()) {
      int v = q.front();
      q.pop();
      for (int j = 0; j < Graph[v].size(); j++) {
        int u = Graph[v][j];
        if (D[i][u] > D[i][v] + 1) {
          D[i][u] = D[i][v] + 1;
          q.push(u);
        };
      };
    };
  };
  for (int i = 0; i < Q; i++) {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d\n", D[Index[a - 1]][Index[b - 1]]);
  };
  return 0;
}
