#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const long long maxn = 1e3 + 7;
const long long maxe = 1e6 + 7;
const long long INF = 1e9 + 7;
const double PI = acos(-1);
int dx[4] = {0, 0, 1, -1};
int dy[4] = {-1, 1, 0, 0};
int n, m, k;
long long r[maxn], cx[maxn], cy[maxn];
long long kx[maxn], ky[maxn];
int dp[maxn][maxn];
vector<int> G[maxn];
int a[maxn];
int b[maxn];
int dep[maxn];
double dis(double x1, double y1, double x2, double y2) {
  return sqrt(((x1 - x2) * (x1 - x2)) + ((y1 - y2) * (y1 - y2)));
}
bool cir_in(int i, int j) {
  double dis1 = dis(cx[i], cy[i], cx[j], cy[j]);
  if (dis1 < r[j] - r[i]) return true;
  return false;
}
bool k_in(int i, int j) {
  double dis1 = dis(kx[i], ky[i], cx[j], cy[j]);
  if (dis1 < r[j]) return true;
  return false;
}
void dfs(int v) {
  for (int i = 0; i < G[v].size(); i++) {
    int u = G[v][i];
    dep[u] = dep[v] + 1;
    dfs(u);
  }
}
int DP(int u, int v) {
  if (r[u] < r[v]) swap(u, v);
  if (dp[u][v] != -1) return dp[u][v];
  if (cir_in(v, u) || u == v)
    return dp[u][v] = dep[v] - dep[u];
  else
    return dp[u][v] = 2 + DP(b[u], b[v]);
}
int main() {
  memset(dp, -1, sizeof(dp));
  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++) {
    cin >> kx[i] >> ky[i];
  }
  for (int i = 1; i <= m; i++) {
    cin >> r[i] >> cx[i] >> cy[i];
  }
  r[0] = 1e11;
  cx[0] = 0;
  cy[0] = 0;
  for (int i = 1; i <= n; i++) {
    int id = 0;
    for (int j = 1; j <= m; j++) {
      if (k_in(i, j) && cir_in(j, id)) id = j;
    }
    a[i] = id;
  }
  for (int i = 1; i <= m; i++) {
    int id = 0;
    for (int j = 1; j <= m; j++) {
      if (i == j) continue;
      if (cir_in(i, j) && cir_in(j, id)) id = j;
    }
    b[i] = id;
    G[id].push_back(i);
  }
  dfs(0);
  for (int i = 0; i < k; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    printf("%d\n", DP(a[u], a[v]));
  }
  return 0;
}
