#include <bits/stdc++.h>
using namespace std;
void err(istream_iterator<string> it) {}
template <typename T, typename... Args>
void err(istream_iterator<string> it, T a, Args... args) {
  cerr << *it << " = " << a << "\n";
  err(++it, args...);
}
const double PI = acos(-1);
const double eps = (1e-9);
const long long int inf = 2e18;
const int N = (1e3) + 3;
bitset<N> dp[N];
pair<int, int> pos[N];
tuple<int, int, int> fence[N];
void solve() {
  int i, j, k, n, m, a, b, r, x, y;
  scanf("%d%d%d", &n, &m, &k);
  for (i = 0; i < n; ++i) scanf("%d%d", &pos[i].first, &pos[i].second);
  for (i = 0; i < m; ++i)
    scanf("%d%d%d", &r, &a, &b), fence[i] = make_tuple(a, b, r);
  long long int dis, sq;
  for (i = 0; i < n; ++i) {
    tie(x, y) = pos[i];
    for (j = 0; j < m; ++j) {
      tie(a, b, r) = fence[j];
      dis = ((long long int)(x - a) * (long long int)(x - a)) +
            ((long long int)(y - b) * (long long int)(y - b));
      sq = ((long long int)(r) * (long long int)(r));
      if (dis > sq) dp[i][j] = 1;
    }
  }
  bitset<N> ans;
  while (k--) {
    scanf("%d%d", &a, &b);
    a--, b--;
    ans = dp[a];
    ans ^= dp[b];
    printf("%d\n", ans.count());
  }
}
int main() {
  int t = 1;
  while (t--) solve();
}
