#include  < stdio.h >
#include 
< math.h >
#include 
< algorithm >
using   namespace  std;
const   double  eps = 1e - 8 ;
int  so,mo,br;
inline 
int  dcmp( double  x) {return (x>eps)-(x<-eps);}
struct  point  {
    
int x,y,z;
}
;
struct  poly  {
    point p[
1001];
    
int n;
}
ans,tem;
bool   operator < ( const  point  & a, const  point  & b) {
    
return a.x<b.x||a.x==b.x&&a.y<b.y;
}

inline 
void  transform( const  point  & a, const  point  & b, const  point  & c, const  point  & d, const  poly  & w, const  poly  & z, bool  type) {
    
double x1=b.x-a.x,y1=b.y-a.y,x2=d.x-c.x,y2=d.y-c.y,s=x2*x2+y2*y2,u=(x1*x2+y1*y2)/s,v=(x2*y1-x1*y2)/s,tx,ty;
    
int sum=0,x,y;
    
for(int i=0;i<z.n;i++){
        x
=z.p[i].x-c.x,y=z.p[i].y-c.y;
        tx
=(double)(u*x-v*y+a.x),ty=(double)(v*x+u*y+a.y);
        x
=rint(tx),y=rint(ty);
        
if(dcmp(tx-(double)x)||dcmp(ty-(double)y))return;
        
bool f=1;
        
for(int j=0;f&&j<w.n;j++)
            
if(w.p[j].x==x&&w.p[j].y==y){
                f
=0;
                tem.p[i]
=w.p[j];
                sum
+=w.p[j].z;
            }

        
        
if(f)return;
    }

    
if(type){
        so
++;
        
if(sum>br){
            br
=sum;
            
for(int i=0;i<z.n;i++)ans.p[i]=tem.p[i];
        }

    }
else mo++;    
}

inline 
void  maping( const  poly  & w, const  poly  & z, bool  type) {
    
for(int i=0;i<w.n;i++)
        
for(int j=0;j<w.n;j++)
            
if(i!=j)transform(w.p[i],w.p[j],z.p[0],z.p[1],w,z,type);
}

inline 
void  swap(point  & a,point  & b, const  point  & c) {
    
if(c.z>b.z){
        a
=b;
        b
=c;
    }
else if(c.z>a.z)a=b;
}

int  main() {
    poly w,z;
    
char s[60];
    
int m,tim=1;
    
while(scanf("%d",&w.n),w.n){
        
for(int i=0;i<w.n;i++)
            scanf(
"%d%d%d",&w.p[i].x,&w.p[i].y,&w.p[i].z);
        scanf(
"%d",&m);
        printf(
"Map #%d\n",tim++);
        
while(m--){
            br
=so=mo=0;
            scanf(
"%d%s",&z.n,s);
            
for(int i=0;i<z.n;i++)
                scanf(
"%d%d",&z.p[i].x,&z.p[i].y);
            
if(z.n>w.n)so=0;
            
if(z.n==1){
                so
=w.n;
                ans.n
=1;
                ans.p[
0].z=0;
                
for(int i=0;i<w.n;i++)ans.p[0]=w.p[i].z>ans.p[0].z?w.p[i]:ans.p[0];
            }
else{
                maping(w,z,
1);
                maping(z,z,
0);
                so
/=mo;
            }

            printf(
"\n%s occurs %d time(s) in the map.\n",s,so);
            
if(so>0){
                sort(ans.p,ans.p
+z.n);
                printf(
"Brightest occurrence:");
                
for(int i=0;i<z.n;i++)printf(" (%d,%d)",ans.p[i].x,ans.p[i].y);puts("");
            }

        }

        puts(
"-----");
    }

    
return 0;
}