#include #define REP(i,a,b) for(i=a;i=' ';i++){ if(in[i+1]=='/'){ while(in[i]!='>') i++; n=par[n]; continue; } i++; k=0; while(in[i]!='>') name[node][k++]=in[i++]; name[node][k]='\0'; sscanf(in+i+1,"%d,%d,%d,%d",minX+node,minY+node,maxX+node,maxY+node); while(in[i+1]!='<') i++; edge[n][es[n]++]=node; par[node]=n; es[node]=0; n=node++; } while(q--){ scanf("%d%d",&i,&j); n=0; for(;;){ rep(k,es[n]){ m=edge[n][k]; if(minX[m]<=i&&i<=maxX[m] && minY[m]<=j&&j<=maxY[m]) break; } if(k==es[n]) break; n=edge[n][k]; } printf("%s %d\n",name[n],es[n]); } } return 0; }