#include <bits/stdc++.h>
using namespace std;
long long poww(long long a, long long b, long long md) {
  return (!b ? 1
             : (b & 1 ? a * poww(a * a % md, b / 2, md) % md
                      : poww(a * a % md, b / 2, md) % md));
}
const long long MAXN = 1e3 + 10;
const long long INF = 4e9;
const long long MOD = 1e9 + 7;
inline long long dist(pair<long long, long long> x,
                      pair<long long, long long> y) {
  return (abs(x.first - y.first) + abs(x.second - y.second)) *
         (abs(x.first - y.first) + abs(x.second - y.second));
}
inline long long C(pair<pair<long long, long long>, long long> x,
                   pair<long long, long long> y) {
  return dist(x.first, y) <= x.second * x.second;
}
vector<pair<pair<long long, long long>, long long> > v;
vector<pair<long long, long long> > v2;
long long n, m, k;
vector<int> adj[MAXN];
int par[MAXN], D[MAXN][MAXN];
void dfs(int i, int v, int p, int d = 0) {
  D[i][v] = d;
  for (int u : adj[v])
    if (u != p) dfs(i, u, v, d + 1);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> k;
  v.push_back({{0, 0}, INF});
  v2.push_back({0, 0});
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    v2.push_back({x, y});
  }
  for (int i = 0; i < m; i++) {
    int x, y, r;
    cin >> r >> x >> y;
    v.push_back({{x, y}, r});
  }
  for (int i = 1; i <= m; i++) {
    int R = 0;
    for (int j = 1; j <= m; j++)
      if (v[j].second > v[i].second && C(v[j], v[i].first) &&
          v[j].second < v[R].second)
        R = j;
    adj[i].push_back(R);
    adj[R].push_back(i);
  }
  for (int i = 0; i <= m; i++) dfs(i, i, -1);
  for (int i = 1; i <= n; i++) {
    int R = 0;
    for (int j = 1; j <= m; j++)
      if (C(v[j], v2[i]) && v[j].second < v[R].second) R = j;
    par[i] = R;
  }
  while (k--) {
    int u, v;
    cin >> u >> v;
    cout << D[par[u]][par[v]] << '\n';
  }
  return 0;
}
