/*
TASK:MOV
LANG:C++
*/
#include <stdio.h>

char cross();
int sign(int x1,int y1,int x2,int y2,int x3,int y3)
{
	int t= ( x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2) );
	return (t>0)-(t<0);
}
int xa,ya,xb,yb,xc,yc,xd,yd,xv,yv;
void swap(int &a,int &b)
{
	int t=a; a=b;b=t;
}
int foo(int x1,int y1,int x2,int y2,int x3,int y3,int x4,int y4)
{
	int r1=sign(x1,y1,x2,y2,x3,y3)*sign(x1,y1,x2,y2,x4,y4);
	int r2=sign(x3,y3,x4,y4,x1,y1)*sign(x3,y3,x4,y4,x2,y2);
	if(r1*r2==0) return 1;
	else return(r1<0 && r2<0);
}

int main()
{
	int N;
	char r[1024];

	scanf("%d",&N);
	for(int i=0;i<N;i++)
	{
		scanf("%d%d%d%d%d%d%d%d%d%d",&xa,&ya,&xb,&yb,&xc,&yc,&xd,&yd,&xv,&yv);
		r[i]=cross();
	}

	r[N]=0;
	printf("%s\n",r);
}

char cross()
{
	if(ya<yb) {swap(ya,yb); swap(xa,xb);}
	if(yd>yc) {swap(yc,yd); swap(xc,xd);}

	int miny,maxy=-1;
	if(yv!=0)
	{
		miny=(yd-ya)/yv;
		maxy=(yc-yb)/yv;
		if(maxy<0) return 48;
	}

	if(xa<xb) {swap(ya,yb); swap(xa,xb);}
	if(xd>xc) {swap(yc,yd); swap(xc,xd);}

	int minx,maxx=-1;
	if(xv!=0)
	{
		minx=(xd-xa)/xv;
		maxx=(xc-xb)/xv;
		if(maxx<0) return 48;
	}

	if(maxx==-1&&maxy==-1) return foo(xa,ya,xb,yb,xc,yc,xd,yd)+48;
	int mmin=miny>minx?miny:minx,mmax=maxy<maxx?maxy:maxx;
	if(xv==0) {mmin=miny; mmax=maxy;}
	if(yv==0) {mmin=minx; mmax=maxx;}

	int i;
	int nxa,nxb,nya,nyb;
	for(i=mmin>0?mmin:0;i<mmax;i++)
	{
		nxa=xa+(xv*i); nxb=xb+(xv*i);
		nya=ya+(yv*i); nyb=yb+(yv*i);
		if(foo(nxa,nya,nxb,nyb,xc,yc,xd,yd)) return 49;
	}

	return 48;
}
