#include #include #include #include using namespace std; int T,n,p[210][4],dx[410],dy[410],nx,ny,xa,xb,ya,yb; int w1[410][410],w2[410][410],fx[4]={1,0,-1,0},fy[4]={0,1,0,-1}; bool vis[410][410]; double dis[410][410]; priority_queue >q; int main() { scanf("%d",&T); while(T--) { memset(vis,0,sizeof(vis)); scanf("%d",&n);nx=ny=0; for(int i=1;i<=n;++i) { for(int j=0;j<4;++j) scanf("%d",&p[i][j]); dx[++nx]=p[i][0],dx[++nx]=p[i][2]; dy[++ny]=p[i][1],dy[++ny]=p[i][3]; } scanf("%d %d %d %d",&xa,&ya,&xb,&yb); dx[++nx]=xa;dx[++nx]=xb; dy[++ny]=ya;dy[++ny]=yb; sort(dx+1,dx+1+nx); sort(dy+1,dy+1+ny); nx=unique(dx+1,dx+1+nx)-dx-1; ny=unique(dy+1,dy+1+ny)-dy-1; for(int i=1;i<=nx;++i) for(int j=1;j<=ny;++j) w1[i][j]=w2[i][j]=1; for(int i=1;i<=n;++i) { p[i][0]=lower_bound(dx+1,dx+1+nx,p[i][0])-dx; p[i][1]=lower_bound(dy+1,dy+1+ny,p[i][1])-dy; p[i][2]=lower_bound(dx+1,dx+1+nx,p[i][2])-dx; p[i][3]=lower_bound(dy+1,dy+1+ny,p[i][3])-dy; for(int j=p[i][0];j<=p[i][2];++j) for(int k=p[i][1];k>=16; if(vis[x][y])continue; vis[x][y]=1; for(int i=0;i<4;++i) { xx=x+fx[i]; yy=y+fy[i]; if(!xx||!yy||xx>nx||yy>ny||vis[xx][yy])continue; double d=x==xx?1.0*(dy[y]-dy[yy])/w1[x][min(y,yy)]:1.0*(dx[x]-dx[xx])/w2[min(x,xx)][y]; if(d<0)d=-d; if(dis[x][y]+d