#include<iostream>
using namespace std;
int K, R, M, N;
int a[20][2];
bool visited[20];
int toado[100][3];
int mang[20][100];
int visitGH[100];
int answer = 0;
int X[10];
bool checkKC(int x1, int y1, int x2, int y2) {
if((x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2) > R*R) {
return false;
}
return true;
}
int tinhN(int x) {
int soN = 0;
for(int i = 0; i < N; i++) {
if(mang[x][i] == 1 && visitGH[i] == 0) {
soN += toado[i][2];
visitGH[i]++;
} else if(mang[x][i] == 1 && visitGH[i] != 0) {
visitGH[i]++;
}
}
return soN;
}
void resetGH (int x) {
for(int i = 0; i < N; i++) {
if(mang[x][i] == 1) {
visitGH[i]--;
}
}
}
void reset() {
for(int i = 0; i < M; i++) {
for(int j = 0; j < N; j++) {
mang[i][j] = 0;
}
visitGH[i] = 0;
visited[i] = false;
}
}
void BT(int k, int sum, int index) {
if(k == K) {
if(answer < sum) {
answer = sum;
}
return;
}
for(int i = index; i < M; i++) {
if(!visited[i]) {
visited[i] = true;
BT(k + 1, sum + tinhN(i), i);
resetGH(i);
visited[i] = false;
}
}
}
int main() {
//freopen("input.txt", "r", stdin);
int T;
cin>>T;
for(int tc = 1; tc <= T; tc++) {
cin>>K>>R>>M;
for(int i = 0; i < M; i++) {
cin>>a[i][0]>>a[i][1];
}
cin>>N;
reset();
for(int i = 0; i < N; i++) {
cin>>toado[i][0]>>toado[i][1]>>toado[i][2];
}
for(int i = 0; i < M; i++) {
for(int j = 0; j < N; j++) {
if(checkKC(a[i][0], a[i][1], toado[j][0], toado[j][1])) {
mang[i][j] = 1;
}
}
}
answer = 0;
BT(0, 0, 0);
cout<<"#"<<tc<<" "<<answer<<endl;
}
return 0;
}