/*
    題意:求是否存在一條直線,使所有線段到這條直線的投影至少有一個(gè)交點(diǎn)
    可以在共同投影處作原直線的垂線,則該垂線與所有線段都相交
    <==> 是否存在一條直線與所有線段都相交

    可以枚舉線段的端點(diǎn)作為直線的(注意如果相同構(gòu)不成直線)
    然后判斷所有線段是否都與之相交

    這種做法我也不是很懂,可能這條直線能將所有點(diǎn)分成位于直線兩端的兩部分吧
*/

#include
<cstdio>
#include
<cstdlib>
#include
<cmath>

const double esp=1e-8;
const int MAXN=210;

struct Point{
    
double x,y;
}
points[MAXN];

bool isEqual(double &a,double &b){
    
return fabs(a-b)<esp;
}

double mul(Point &a,Point &b,Point &o){
    
return (a.x-o.x)*(b.y-o.y)-(b.x-o.x)*(a.y-o.y);
}

int main(){
    
//freopen("in","r",stdin);
    int T,n;
    scanf(
"%d",&T);
    
while(T--){
        scanf(
"%d",&n);
        
for(int i=1;i<=2*n;i+=2)
            scanf(
"%lf%lf%lf%lf",&points[i].x,&points[i].y,&points[i+1].x,&points[i+1].y);

        
bool flag=false;
        
for(int i=1;i<=2*n&&!flag;i++)//enum line
            for(int j=1;j<=2*n;j++){
                Point p1
=points[i],p2=points[j];
                
if(isEqual(p1.x,p2.x)&&isEqual(p1.y,p2.y))continue;
                
//chk
                int k;
                
for(k=1;k<=2*n;k+=2)
                    
if(mul(points[k],p1,p2)*mul(points[k+1],p1,p2)>esp)break;
                
if(k>=2*n){flag=true;break;}
            }

        printf(flag
?"Yes!\n":"No!\n");
    }

    
return 0;
}