/*
TASK:MOV
LANG:C++
*/
#include <stdio.h>
typedef struct pointz
{
        int x;
        int y;
};
int De(pointz a,pointz b,pointz c)
{
    long Z;
    Z = a.x*b.y + a.y*c.x + b.x*c.y - (a.y*b.x + a.x*c.y + b.y*c.x);
    if(Z == 0)return 0;
    if(Z > 0)return 1;
    if(Z < 0)return -1;
}
/*int cp(pointz a,pointz b,pointz c)
{
    return((b.x-a.x)*(c.y - a.y) - (c.x - a.x)*(b.y - a.y));
}*/
int sp(pointz a,pointz b,pointz c)
{
    return ((b.x-a.x)*(c.x - a.x) + (c.y - a.y)*(b.y - a.y));
}
int main()
{
    pointz A,B,C,D,prav,tmpA;
//    sp posoka;
    int p,q;
    scanf("%d",&p);
    for(q = 0;q < p;q++)
    {
          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,&prav.x,&prav.y);
          if(De(A,B,D) != De(A,B,C))
          {
                       printf("%d",1);
                       continue;
          }
          tmpA.x = A.x + prav.x;
          tmpA.y = A.y + prav.y;
          if(De(A,tmpA,C) != De(A,tmpA,D))
          {
                          if(sp(A,C,prav) > 0 )
                          {
                           printf("%d",1);
                           continue;
                          }
          }          
          tmpA.x = B.x + prav.x;
          tmpA.y = B.y + prav.y;
          if(De(B,tmpA,C) != De(B,tmpA,D))
          {
                     if(sp(B,C,prav) > 0)//ako e s posokata si
                     {
                           printf("%d",1);
                           continue;
                     }
          }
          if(De(A,C,D)!= De(B,C,D))
          {
              if(sp(A,C,prav) > 0)
              {
                           printf("%d",1);
                           continue;
              }     
          }
          
          printf("%d",0);
    }
    printf("\n");
    return 0;
}
