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

#include<cstdio>

struct point {long x,y;};

point A,B,C,D,v;
long face(point p0,point p1,point p2) {
    long dx1=p1.x-p0.x;
    long dx2=p2.x-p0.x;
    long dy1=p1.y-p0.y;
    long dy2=p2.y-p0.y;
    return dx1*dy2-dx2*dy1;
}
bool pres() {
    point A1,B1;
    A1.x=A.x+v.x;A1.y=A.y+v.y;
    B1.x=B.x+v.x;B1.y=B.y+v.y;
    long aba1=face(A,B,A1);
    long aa1c=face(A,A1,C);
    long aa1d=face(A,A1,D);
    long bb1c=face(B,B1,C);
    long bb1d=face(B,B1,D);
    long abc=face(A,B,C);
    long abd=face(A,B,D);
    return ((aa1c>0&&bb1c>0&&aa1d>0&&bb1d>0)||
            (aa1c<0&&bb1c<0&&aa1d<0&&bb1d<0)||
            (abc<0&&abd<0&&aba1>0)||
            (abc>0&&abd>0&&aba1<0));
}

void solve() {
    int N;
    scanf("%d",&N);
    for (int 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,&v.x,&v.y);
        int i=!pres();
        printf("%d",i);  
    }
    printf("\n"); 
}



    
int main() {
    solve();
    return 0;
}
