#include <bits/stdc++.h>
using namespace std;
template <class T>
void show(T a, int n) {
  for (int i = 0; i < n; ++i) cout << a[i] << ' ';
  cout << endl;
}
template <class T>
void show(T a, int r, int l) {
  for (int i = 0; i < r; ++i) show(a[i], l);
  cout << endl;
}
const int N = 1 << 10;
const int M = 5000;
const int oo = 10000 * 10000 * 10;
struct Point {
  double x, y;
} p[N];
struct Cir {
  double r;
  double x, y;
} cir[N];
bool cmp(Cir a, Cir b) { return a.r < b.r; }
inline double dis2(double x, double y, double xx, double yy) {
  return (x - xx) * (x - xx) + (y - yy) * (y - yy);
}
int n, m;
int dex[N];
bool visited[N];
vector<int> e[N];
int d[N][N];
int que[N];
void bfs(int s, int d[]) {
  int i, j, k, u, v;
  memset(visited, 0, sizeof(visited));
  int head = 0, tail = 0;
  for (i = 0; i < m + 1; ++i) d[i] = oo;
  que[tail++] = s;
  d[s] = 0;
  visited[s] = true;
  while (head != tail) {
    u = que[head++];
    for (i = 0; i < e[u].size(); ++i) {
      int v = e[u][i];
      if (!visited[v]) {
        d[v] = d[u] + 1;
        visited[v] = true;
        que[tail++] = v;
      }
    }
  }
}
void solve() {
  int i, j, k;
  sort(cir, cir + m, cmp);
  memset(visited, 0, sizeof(visited));
  for (i = 0; i < m; ++i) {
    for (j = i + 1; j < m; ++j) {
      if (dis2(cir[i].x, cir[i].y, cir[j].x, cir[j].y) < cir[j].r * cir[j].r) {
        visited[i] = true;
        e[i].push_back(j);
        e[j].push_back(i);
        break;
      }
    }
  }
  for (i = 0; i < m; ++i)
    if (!visited[i]) {
      e[i].push_back(m);
      e[m].push_back(i);
    }
  for (i = 0; i < m + 1; ++i) {
    bfs(i, d[i]);
  }
  for (i = 0; i < n; ++i) {
    dex[i] = m;
    for (j = 0; j < m; ++j) {
      if (dis2(p[i].x, p[i].y, cir[j].x, cir[j].y) < cir[j].r * cir[j].r) {
        dex[i] = j;
        break;
      }
    }
  }
}
int main() {
  int i, j, cas = 0;
  int q;
  scanf("%d %d %d", &n, &m, &q);
  for (i = 0; i < n; ++i) scanf("%lf %lf", &p[i].x, &p[i].y);
  for (i = 0; i < m; ++i) scanf("%lf %lf %lf", &cir[i].r, &cir[i].x, &cir[i].y);
  solve();
  while (q--) {
    int u, v;
    scanf("%d %d", &u, &v);
    u = dex[u - 1];
    v = dex[v - 1];
    printf("%d\n", d[u][v]);
  }
  return 0;
}
