#include <bits/stdc++.h>
const int MAX_N = 1000;
inline long long sqr(long long x) { return x * x; }
struct pt {
  long long X, Y;
};
pt P[MAX_N];
int C[2];
int V[2][MAX_N];
int D[MAX_N][MAX_N];
int main() {
  int N, M, K;
  int R, X, Y;
  scanf("%d%d%d", &N, &M, &K);
  for (int i = 0; i < N; ++i) {
    scanf("%d%d", &X, &Y);
    P[i].X = X;
    P[i].Y = Y;
  }
  for (int i = 0; i < M; ++i) {
    scanf("%d%d%d", &R, &X, &Y);
    long long r = R, x = X, y = Y;
    r *= r;
    C[0] = C[1] = 0;
    for (int j = 0; j < N; ++j) {
      bool inside = (sqr(x - P[j].X) + sqr(y - P[j].Y)) < r;
      V[inside][C[inside]++] = j;
    }
    for (int c1 = 0; c1 < C[0]; ++c1) {
      int i1 = V[0][c1];
      for (int c2 = 0; c2 < C[1]; ++c2) {
        int i2 = V[1][c2];
        ++D[i1][i2];
        ++D[i2][i1];
      }
    }
  }
  for (int i = 0; i < K; ++i) {
    scanf("%d%d", &X, &Y);
    printf("%d\n", D[X - 1][Y - 1]);
  }
}
