#include <stdio.h>#include <stdlib.h>#include <iostream>#include <math.h>#include <memory.h>#define N 755using namespace std;int n,p = 0;int pre[N];struct edge{int x,y;double len;}city[N*N];typedef struct edge NODE;double compute(double x1,double y1,double x2,double y2){return (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2);}int find(int x){while(x!=pre[x])x = pre[x];return x;}void input(){int m,x,y;p = 0;double coor[N][2],len;cin >> n;for(int i=1; i<=n; i++)cin >> coor[i][0] >> coor[i][1];cin >> m;for(int i=1; i<=n; i++)pre[i] = i;for(int i=1; i<=m; i++){cin >> x >> y;x = find(x);y = find(y);if( x!= y ) pre[x] = y;}for(int i=1; i<=n; i++) for(int j=i+1; j<=n; j++) {len = compute(coor[i][0],coor[i][1],coor[j][0],coor[j][1]);city[p].x = i; city[p].y = j;city[p].len = len;p++;}}int cmp ( const void *a, const void *b){return ((NODE*)a)->len > ((NODE*)b)->len ? 1 : -1;}void kruskal(){int a,b,i;qsort( city , p, sizeof(NODE),cmp);for(i=0; i<p; i++){a = find( city[i].x );b = find( city[i].y );if( a!= b ){pre[b] = a;cout << city[i].x << " " << city[i].y << endl;}}}int main(void){int ncases;cin >> ncases;while( ncases-- ){input();kruskal();if( ncases != 0 ) cout << endl;}return 0;}