#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return a == 0 ? b : gcd(b % a, a); }
string filename = "test";
vector<pair<int, int> > dots;
vector<int> d_to_f;
struct S {
  int x, y, r;
  int p;
  S() : p(-1) {}
  bool operator<(const S& a) const { return r < a.r; }
};
vector<S> f;
long long dist2(const pair<int, int>& a, const pair<int, int>& b) {
  long long dx = a.first - b.first, dy = a.second - b.second;
  return dx * dx + dy * dy;
}
double dist(const pair<int, int>& a, const pair<int, int>& b) {
  return sqrt((1.0) * dist2(a, b));
}
int main() {
  string str_fin = filename + ".in";
  string str_fout = filename + ".out";
  int n, m, k;
  cin >> n >> m >> k;
  dots.clear();
  dots.reserve(n);
  int x, y;
  for (int _n(n), i(0); i < _n; i++) {
    scanf("%d %d", &x, &y);
    dots.push_back(pair<int, int>(x, y));
  }
  f.clear();
  f.reserve(m);
  for (int _n(m), i(0); i < _n; i++) {
    S ff;
    scanf("%d %d %d", &ff.r, &ff.x, &ff.y);
    f.push_back(ff);
  }
  sort((f).begin(), (f).end());
  for (int _n(m), i(0); i < _n; i++) {
    long long r = f[i].r;
    for (int _n(m), j(i + 1); j < _n; j++) {
      long long r1 = f[j].r;
      long long r1_2 = r1 * r1;
      long long d2 =
          dist2(pair<int, int>(f[i].x, f[i].y), pair<int, int>(f[j].x, f[j].y));
      if (d2 < r1_2) {
        f[i].p = j;
        break;
      }
    }
  }
  d_to_f.clear();
  for (int _n(n), i(0); i < _n; i++) {
    int now = -1;
    for (int _n(m), j(0); j < _n; j++) {
      long long r1 = f[j].r;
      long long r1_2 = r1 * r1;
      long long d2 = dist2(dots[i], pair<int, int>(f[j].x, f[j].y));
      if (d2 < r1_2) {
        now = j;
        break;
      }
    }
    d_to_f.push_back(now);
  }
  for (int _n(k), i(0); i < _n; i++) {
    scanf("%d %d", &x, &y);
    --x;
    --y;
    int fx = d_to_f[x], fy = d_to_f[y];
    int res = 0;
    if (fx != fy) {
      int cntx = 0, cnty = 0;
      int now = fx;
      while (now != -1) {
        cntx++;
        now = f[now].p;
      }
      now = fy;
      while (now != -1) {
        cnty++;
        now = f[now].p;
      }
      int nowx = fx, nowy = fy;
      if (cntx > cnty) {
        for (int _n(cntx - cnty), i2(0); i2 < _n; i2++) nowx = f[nowx].p;
        res = cntx - cnty;
      } else if (cnty > cntx) {
        for (int _n(cnty - cntx), i2(0); i2 < _n; i2++) nowy = f[nowy].p;
        res = cnty - cntx;
      }
      while (nowx != nowy) {
        nowx = f[nowx].p;
        nowy = f[nowy].p;
        res += 2;
      }
    }
    cout << res << endl;
  }
  return 0;
}
