#include <bits/stdc++.h>
using namespace std;
double kx[1000], ky[1000], cx[1001], cy[1001], r[1001];
int n, m, k, d[1001][1001], num[1000], parent[1001];
vector<vector<int> > g;
double dist(double x1, double y1, double x2, double y2) {
  return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
void dfs(int u, int ancestor, int len, int p) {
  d[u][ancestor] = d[ancestor][u] = len++;
  if (parent[u] != p && u) dfs(parent[u], ancestor, len, u);
  for (int i = 0; i < (int)g[u].size(); i++)
    if (g[u][i] != p) dfs(g[u][i], ancestor, len, u);
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i < n; i++) scanf("%lf%lf", &kx[i], &ky[i]);
  cx[0] = cy[0] = 0;
  r[0] = 1e10;
  for (int i = 1; i <= m; i++) scanf("%lf%lf%lf", &r[i], &cx[i], &cy[i]);
  for (int i = 0; i <= m; i++)
    for (int j = i + 1; j <= m; j++) d[i][j] = d[j][i] = -1;
  g.resize(m + 1);
  for (int i = 1; i <= m; i++) {
    int p = 0;
    for (int j = 1; j <= m; j++)
      if (i != j && r[j] < r[p] &&
          dist(cx[i], cy[i], cx[j], cy[j]) + r[i] <= r[j])
        p = j;
    parent[i] = p;
    g[p].push_back(i);
  }
  for (int i = 0; i < n; i++) {
    int x = 0;
    for (int j = 1; j <= m; j++)
      if (r[j] < r[x] && dist(cx[j], cy[j], kx[i], ky[i]) <= r[j]) x = j;
    num[i + 1] = x;
  }
  for (int i = 0; i <= m; i++) dfs(i, i, 0, i);
  for (int i = 0; i < k; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    printf("%d\n", d[num[u]][num[v]]);
  }
  return 0;
}
