/*
TASK:MOV
LANG:C++
*/
#include <iostream>
#define max_(a,b) (a>b)?a:b
using namespace std;

struct p
{
  int x;
  int y;
}x1,x2,x3,x4,v;
bool cross(p x1, p x2, p x3, p x4)
{
  double k1=x2.y-x1.y;
  k1/=x2.x-x1.x;
  double k2=x4.y-x3.y;
  k2/=x4.x-x3.x;
  double p1,p2;
  p1=x1.y;
  p1-=x1.x*k1;
  p2=x3.y;
  p2-=x3.x*k2;
  double pnt;
  if(k1==k2) return false;
  pnt = p2 -p1;
  pnt /= k1-k2;
  if(pnt<=max(x1.x,x2.x)&&pnt>=min(x1.x,x2.x)&&pnt<=max(x3.x,x4.x)&&pnt>=min(x3.x,x4.x))
    return true;
}
void check()
{
   for(int i=0; i<1000000; i++)
   {
     x1.x+=i*v.x;
     x1.y+=i*v.y;
     x2.x+=i*v.x;
     x2.y+=i*v.y;
     if(x1.x!=x2.x&&x3.x!=x4.x)
       if(cross(x1,x2,x3,x4))
       {
         cout<<1;
         break;
       }
       else
         continue;
     else
        if(max(x1.y,x2.y)>max(x3.y,x4.y)&&min(x1.y,x2.y)<min(x3.y,x4.y)
          &&max(x3.x,x4.x)>x1.x&&min(x3.x,x4.x)<x1.x)
            cout<<1;

     }
     cout<<0;
}
int main()
{
  int n;
  for(int i=0; i<n; i++)
  {
    cin>>x1.x>>x1.y>>x2.x>>x2.y>>x3.x>>x3.y>>x4.x>>x4.y>>v.x>>v.y;
    check();
  }
  cout<<"\n";
  return 0;
}
