#include <bits/stdc++.h>
using namespace std;
const int maxn = 2010;
int d[maxn][maxn];
pair<int, int> p[maxn];
int r[maxn];
int n, m, q;
vector<int> g[maxn], h[maxn];
queue<int> Q;
int id[maxn];
long long sqr(int first) { return 1ll * first * first; }
double dist(pair<int, int> a, pair<int, int> b) {
  return sqrt(sqr(a.first - b.first) + sqr(a.second - b.second));
}
bool in(pair<int, int> a, pair<int, int> b, int r) { return dist(a, b) < r; }
bool cmp(int a, int b) { return r[a] < r[b]; }
int main() {
  scanf("%d%d%d", &n, &m, &q);
  for (int i = (1), _b = (n); i <= _b; ++i)
    scanf("%d%d", &p[i].first, &p[i].second);
  for (int i = (1), _b = (m); i <= _b; ++i)
    scanf("%d%d%d", &r[i + n], &p[i + n].first, &p[i + n].second);
  for (int i = (1), _b = (m); i <= _b; ++i) id[i] = i + n;
  sort(id + 1, id + 1 + m, cmp);
  for (int i = (1), _b = (m); i <= _b; ++i) {
    for (int j = (i + 1), _b = (m + 1); j <= _b; ++j) {
      if (j == m + 1) g[0].push_back(id[i]);
      if (in(p[id[i]], p[id[j]], r[id[j]])) {
        g[id[j]].push_back(id[i]);
        break;
      }
    }
  }
  for (int i = (1), _b = (n); i <= _b; ++i) {
    for (int j = (1), _b = (m + 1); j <= _b; ++j) {
      if (j == m + 1) g[0].push_back(i);
      if (in(p[i], p[id[j]], r[id[j]])) {
        g[id[j]].push_back(i);
        break;
      }
    }
  }
  for (int u = (0), _b = (n + m); u <= _b; ++u) {
    for (int i = (0), _b = (int((g[u]).size())); i < _b; ++i)
      h[g[u][i]].push_back(u), h[u].push_back(g[u][i]);
  }
  for (int s = (1), _b = (n); s <= _b; ++s) {
    d[s][s] = 1;
    Q.push(s);
    while (!Q.empty()) {
      int u = Q.front();
      Q.pop();
      for (int i = (0), _b = (int((h[u]).size())); i < _b; ++i) {
        int v = h[u][i];
        if (!d[s][v]) d[s][v] = d[s][u] + 1, Q.push(v);
      }
    }
  }
  while (q--) {
    int u, v;
    scanf("%d%d", &u, &v);
    if (u == v)
      printf("0\n");
    else
      printf("%d\n", d[u][v] - 3);
  }
  return 0;
}
