/*
TASK:mov
LANG:C++
*/
#include<stdio.h>
#include<cmath>
#include<algorithm>
using namespace std;
typedef struct point
{
   int x,y;
};
    point A,B,C,D,v1,v2;
    int n;
    double d1,d2,d3,d4,d0;
    int s1,s2,s3,s4;
int Dt(point p1,point p2,point p3)
{
   return p1.x*(p2.y-p3.y)+p2.x*(p3.y-p1.y)+p3.x*(p1.y-p2.y);
}
double dist(point p1,point p2)
{
    double a=p1.x-p2.x;
    double b=p1.y-p2.y;
    return sqrt(a*a+b*b);
}
int main()
{
    int i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
      scanf("%d%d%d%d%d%d%d%d%d%d",&A.x,&A.y,&B.x,&B.y,&C.x,&C.y,&D.x,&D.y,&v1.x,&v1.y);
      v2.x=v1.x*2;
      v2.y=v1.y*2;
      s1=Dt(v1,v2,A);
      s2=Dt(v1,v2,B);
      s3=Dt(v1,v2,C);
      s4=Dt(v1,v2,D);
      d0=dist(v1,v2);
      d1=s1/d0;
      d2=s2/d0;
      d3=s3/d0;
      d4=s4/d0;
      if(d1>d2)swap(d1,d2);
      if(d1<=d3 && d3<=d2)
      {
       /*if(Dt(A,C,v2)<=0 && Dt(B,C,v2)<=0)*/printf("1");
      }
      else
      if(d1<=d4 && d4<=d2)
      {
       /*if(Dt(A,D,v2)<=0 && Dt(B,D,v2)<=0)*/printf("1");
      }
      else printf("0");
    }
    printf("\n");
return 0;
}

