/*
TASK: mov
LANG: C
*/
#include <stdio.h>
#include <math.h>

#define MIN(a,b) ((a)<(b) ? (a) : (b))
#define MAX(a,b) ((a)>(b) ? (a) : (b))

#define ll long long

ll xa,ya,xb,yb,xc,yc,xd,yd,xv,yv;
ll a1,b1,c1,a2,b2,c2;
double xp,yp,xq,yq;

char sign(double p)
{
     if (p>0) return 1;
     if (p<0) return -1;
     return 0;
}

ll ori(ll x1,ll y1,ll x2,ll y2,ll x3, ll y3)
{return x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2);}

double orid(double x1,double y1,double x2,double y2,double x3, double y3)
{return x1*(y2-y3)+x2*(y3-y1)+x3*(y1-y2);}

void make_eq(ll x1,ll y1,ll x2,ll y2, ll *a, ll *b, ll *c)
{
     *a = y1-y2;
     *b = x2-x1;
     *c = x1*y2 - x2*y1;
}

char solve()
{
     // 4astni slu4ai :)
     
     // ako v || CD
     if (ori(0,0,xv,yv,xc-xd,yc-yd) == 0) {
        if (sign(ori(xa,ya,xb,yb,xc,yc)) == sign(ori(xa,ya,xb,yb,xa+xv,ya+yv)) || sign(ori(xa,ya,xb,yb,xd,yd)) == sign(ori(xa,ya,xb,yb,xa+xv,ya+yv))) 
           if ( sign(ori(xa,ya,xa+xv,ya+yv,xc,yc)) == -sign(ori(xb,yb,xb+xv,yb+yv,xc,yc)) )
              return 1;
        }
     
     make_eq(xc,yc,xd,yd,&a1,&b1,&c1);
     make_eq(xa,ya,xa+xv,ya+yv,&a2,&b2,&c2);
     xp = (double) (b1*c2-b2*c1)/(a1*b2-a2*b1);
     yp = (double) -(a2*xp+c2)/b2;
     make_eq(xb,yb,xb+xv,yb+yv,&a2,&b2,&c2);
     xq = (double) (b1*c2-b2*c1)/(a1*b2-a2*b1);
     yq = (double) -(a2*xq+c2)/b2;
     if (sign(orid(xa,ya,xb,yb,xp,yp)) != sign(orid(xa,ya,xb,yb,xa+xv,ya+yv)) && sign(orid(xa,ya,xb,yb,xq,yq)) != sign(orid(xa,ya,xb,yb,xa+xv,ya+yv))) return 0;
     if ((xp-xc)*(xp-xd) <= 0 || (xq-xc)*(xq-xd) <= 0) return 1;
     if (MIN(xp,xq) < MIN(xc,xd) && MAX(xp,xq) > MAX(xc,xd)) return 1;
     return 0;
}

int main()
{
    int i,n;
    scanf("%d",&n);
    for (i=0;i<n;++i) {
        scanf("%lld%lld%lld%lld%lld%lld%lld%lld%lld%lld",&xa,&ya,&xb,&yb,&xc,&yc,&xd,&yd,&xv,&yv);
        printf("%d",solve());
        }
    printf("\n");
    return 0;
}
