#include <bits/stdc++.h>
using namespace std;
int n, m, k;
struct hehe {
  int nx, nd;
} e[2000100];
struct kk {
  long long r, x, y;
} b[1010], a[1010];
int cnt, fi[1010], dep[1010], f[10001][21], lim;
bool cmp(const kk& p, const kk& q) { return p.r < q.r; }
long long disk(kk p, kk q) {
  return sqrt((p.x - q.x) * (p.x - q.x) + (p.y - q.y) * (p.y - q.y));
}
void add(int a, int b) { e[++cnt] = (hehe){fi[a], b}, fi[a] = cnt; }
void dfs(int p, int fa) {
  f[p][0] = fa;
  dep[p] = dep[fa] + 1;
  for (int i = fi[p]; i; i = e[i].nx)
    if (e[i].nd != fa) dfs(e[i].nd, p);
}
int LCA(int u, int v) {
  if (dep[u] > dep[v]) swap(u, v);
  for (int i = lim; i >= 0; i--)
    if (dep[u] <= dep[f[v][i]]) v = f[v][i];
  if (u == v) return u;
  for (int i = lim; i >= 0; i--)
    if (f[v][i] != f[u][i]) u = f[u][i], v = f[v][i];
  return f[u][0];
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  lim = log(n) / log(2) + 1;
  for (int i = 1; i <= n; i++) scanf("%lld%lld", &a[i].x, &a[i].y);
  for (int i = 1; i <= m; i++) scanf("%lld%lld%lld", &b[i].r, &b[i].x, &b[i].y);
  b[0] = (kk){2147483647, 0, 0};
  sort(b, b + m + 1, cmp);
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= m; j++) {
      int dis = disk(a[i], b[j]);
      if (dis < b[j].r) {
        a[i].r = j;
        break;
      }
    }
  }
  for (int i = 0; i <= m; i++) {
    for (int j = i + 1; j <= m; j++)
      if (disk(b[i], b[j]) < b[j].r) {
        add(i, j);
        add(j, i);
        break;
      }
  }
  dfs(m, m);
  for (int j = 1; j <= lim; j++)
    for (int i = 0; i <= m; i++) f[i][j] = f[f[i][j - 1]][j - 1];
  for (int i = 1; i <= k; i++) {
    int p, q;
    scanf("%d%d", &p, &q);
    int lc = LCA(a[p].r, a[q].r);
    cout << dep[a[p].r] + dep[a[q].r] - 2 * dep[lc] << endl;
  }
}
