#include <bits/stdc++.h>
using namespace std;
const double EPS = 1e-9;
const double PI = acos(-1);
double dgtord(double x) { return (x / 180) * PI; }
int n, m, k, x[1003], y[1003];
struct circle {
  complex<int> c;
  double r;
};
circle cr[1003];
int mask[1003][55];
bool ok(int i, int j) {
  long long xxx = x[i] - cr[j].c.real();
  xxx *= xxx;
  long long yyy = y[i] - cr[j].c.imag();
  yyy *= yyy;
  return xxx + yyy < 1LL * cr[j].r * cr[j].r;
}
int cnt(int bin) {
  int ret = 0;
  while (bin) {
    if (bin & 1) {
      ret++;
    }
    bin /= 2;
  }
  return ret;
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &x[i], &y[i]);
  }
  memset(mask, 0, sizeof(mask));
  int xx, rr, yy;
  for (int i = 0; i < m; i++) {
    scanf("%d%d%d", &rr, &xx, &yy);
    cr[i].r = rr;
    cr[i].c = complex<int>(xx, yy);
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (ok(i, j)) {
        mask[i][j / 20] |= 1 << (j % 20);
      }
    }
  }
  int a, b;
  int ans;
  for (int i = 0; i < k; i++) {
    ans = 0;
    scanf("%d%d", &a, &b);
    a--;
    b--;
    for (int j = 0; j < 51; j++) {
      ans += cnt(mask[a][j] ^ mask[b][j]);
    }
    printf("%d\n", ans);
  }
  return 0;
}
