#include <bits/stdc++.h>
using namespace std;
template <class T>
bool umin(T& a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool umax(T& a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
int lvl[1009], P[1009][10], id[1009], par[1009];
vector<int> adj[1009];
pair<int, int> point[1009];
pair<int, pair<int, int> > circle[1009];
void dfs(int nd, int pr) {
  P[nd][0] = pr;
  lvl[nd] = (~pr ? lvl[pr] + 1 : 1);
  for (__typeof((adj[nd]).begin()) it = (adj[nd]).begin();
       it != (adj[nd]).end(); it++)
    dfs(*it, nd);
}
double dis(pair<int, int> x, pair<int, int> y) {
  long long aa = (x.first - y.first) * 1LL * (x.first - y.first);
  long long bb = (x.second - y.second) * 1LL * (x.second - y.second);
  return sqrt(aa + bb);
}
bool in(pair<int, pair<int, int> > x, pair<int, int> y) {
  return (dis(x.second, y) <= x.first);
}
int main() {
  memset(P, -1, sizeof P);
  int n, m, q;
  scanf("%d%d%d", &n, &m, &q);
  for (int i = 1; i <= n; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    point[i] = make_pair(u, v);
  }
  for (int i = 1; i <= m; i++) {
    int r, Cx, Cy;
    scanf("%d%d%d", &r, &Cx, &Cy);
    circle[i] = make_pair(r, make_pair(Cx, Cy));
  }
  sort(circle + 1, circle + m + 1);
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++)
      if (in(circle[j], point[i])) {
        id[i] = j;
        break;
      }
  }
  for (int i = 1; i <= m; i++)
    for (int j = i + 1; j <= m; j++)
      if (in(circle[j], circle[i].second)) {
        par[i] = j;
        break;
      }
  for (int i = 1; i <= m; i++) adj[par[i]].push_back(i);
  dfs(0, -1);
  for (int j = 1; j < 10; j++)
    for (int i = 1; i <= m; i++)
      if (~P[i][j - 1]) P[i][j] = P[P[i][j - 1]][j - 1];
  while (q--) {
    int x, y, ans;
    scanf("%d%d", &x, &y);
    x = id[x];
    y = id[y];
    int res = lvl[x] + lvl[y];
    if (lvl[x] < lvl[y]) swap(x, y);
    for (int i = 9; i >= 0; i--)
      if (lvl[x] - (1 << i) >= lvl[y]) x = P[x][i];
    if (x == y)
      ans = x;
    else {
      for (int i = 9; i >= 0; i--)
        if (~P[x][i] and P[x][i] != P[y][i]) x = P[x][i], y = P[y][i];
      ans = P[x][0];
    }
    printf("%d\n", res - 2 * lvl[ans]);
  }
  return 0;
}
