/*
TASK: mov
LANG: C++
*/

#include <iostream>
using namespace std;

struct point
{
	int x,y;
};

point a,b,c,d,v;
int n;
char ans[128];

int lice(point a1,point a2,point a3)
{
	return a1.x*a2.y+a3.x*(a1.y-a2.y)+a3.y*(a2.x-a1.x)-a2.x*a1.y;
}

void solve(int g)
{
	int min=(c.x-b.x)/v.x;
	int max=(d.x-a.x)/v.x;
	if(min<0) min=0;
	if(max<0) 
	{
		ans[g]='0';
		return;
	}
	for(int i=min;i<=max;i++)
	{
		point arg1,arg2;
		arg1.x=a.x+i*v.x;
		arg1.y=a.y+i*v.y;
		arg2.x=b.x+i*v.x;
		arg2.y=b.y+i*v.y;
		if(lice(arg1,arg2,c)*lice(arg1,arg2,d)<=0&&lice(c,d,arg1)*lice(c,d,arg2)<=0)
		{
			ans[g]='1';
			return;
		}
	}
	ans[g]='0';
}

void read(int g)
{
	point s;
	cin>>a.x>>a.y>>b.x>>b.y>>c.x>>c.y>>d.x>>d.y>>v.x>>v.y;
	if(a.x>b.x)
	{
		s=a;
		a=b;
		b=s;
	}
	if(c.x>d.x)
	{
		s=c;
		c=d;
		d=s;
	}
	solve(g);
}

int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		read(i);
	}
	cout<<ans<<endl;
	return 0;
}
