#include <bits/stdc++.h>
using namespace std;
vector<pair<long long, long long> > points;
vector<pair<long long, pair<long long, long long> > > areas;
map<long long, vector<long long> > pm;
int main() {
  int n, m, k;
  scanf("%i%i%i", &n, &m, &k);
  for (int i = 0; i < n; i++) {
    int x, y;
    scanf("%i%i", &x, &y);
    points.push_back(pair<long long, long long>(x, y));
  }
  for (int i = 0; i < m; i++) {
    int c1, c2, r;
    scanf("%i%i%i", &r, &c1, &c2);
    areas.push_back(pair<long long, pair<long long, long long> >(
        r, pair<long long, long long>(c1, c2)));
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if ((points[i].first - areas[j].second.first) *
                  (points[i].first - areas[j].second.first) +
              (points[i].second - areas[j].second.second) *
                  (points[i].second - areas[j].second.second) <
          areas[j].first * areas[j].first) {
        pm[i].push_back(j);
      }
    }
    sort(pm[i].begin(), pm[i].end());
  }
  for (int i = 0; i < k; i++) {
    int a, b;
    scanf("%i%i", &a, &b);
    a -= 1;
    b -= 1;
    vector<long long> tmp1 = pm[a];
    vector<long long> tmp2 = pm[b];
    int p = 0;
    int cnt = 0;
    for (int i = 0; i < tmp1.size(); i++) {
      while (p < tmp2.size() && tmp2[p] < tmp1[i]) {
        cnt++;
        p++;
      }
      if (p == tmp2.size() || tmp2[p] != tmp1[i]) {
        cnt++;
      }
      if (p != tmp2.size() && tmp2[p] == tmp1[i]) {
        p++;
      }
    }
    printf("%i\n", cnt + (tmp2.size() - p));
  }
  return 0;
}
