#include <bits/stdc++.h>
using namespace std;
long long int powmod(long long int a, int b, int n) {
  long long int rm = 1;
  while (b) {
    if (b % 2) {
      rm = (rm * a) % n;
    }
    a = (a * a) % n;
    b /= 2;
  }
  return rm;
}
std::vector<pair<long long int, int> > V;
int n, m, Q, fits[1010], inside[int(1e5 + 10)];
long long int Cx[1010], Cy[1010], Kx[1010], Ky[1010];
long long int sqdis(int x1, int y1, int x2, int y2) {
  return pow(x1 - x2, 2) + pow(y1 - y2, 2);
}
int query(int a, int b) {
  int id1 = inside[a], id2 = inside[b];
  int dis = 0;
  while (1) {
    while (id1 < id2) {
      id1 = fits[id1];
      dis++;
    }
    while (id2 < id1) {
      id2 = fits[id2];
      dis++;
    }
    if (id1 == id2) break;
  }
  return dis;
}
int iunderj(int i, int j) {
  return (pow(V[i].first - V[j].first, 2) >
          sqdis(Cx[V[i].second], Cy[V[i].second], Cx[V[j].second],
                Cy[V[j].second]));
}
int main() {
  int qr;
  V.push_back(make_pair(0, 0));
  cin >> n >> m >> Q;
  for (int i = int(1); i <= (int)n; i++) cin >> Kx[i] >> Ky[i];
  for (int i = int(1); i <= (int)m; i++) {
    cin >> qr >> Cx[i] >> Cy[i];
    V.push_back(make_pair(qr, i));
  }
  sort(V.begin() + 1, V.end());
  for (int a = 1; a <= n; ++a) {
    inside[a] = m + 1;
    for (int i = 1; i <= m; ++i) {
      if (sqdis(Kx[a], Ky[a], Cx[V[i].second], Cy[V[i].second]) <
          pow(V[i].first, 2)) {
        inside[a] = i;
        break;
      }
    }
  }
  memset(fits, -1, sizeof(fits));
  ;
  for (int i = 1; i <= m; ++i) {
    for (int j = i + 1; j <= m; ++j) {
      if (iunderj(i, j)) {
        fits[i] = j;
        break;
      }
    }
  }
  for (int i = 1; i <= m; ++i) {
    if (fits[i] == -1) {
      fits[i] = m + 1;
    }
  }
  int a, b;
  while (Q--) {
    scanf("%d", &a);
    ;
    scanf("%d", &b);
    ;
    printf("%d\n", query(a, b));
  }
  return 0;
}
