#include using namespace std; typedef long long ll; typedef unsigned long long ull; #define pii pair #define MP make_pair template inline void in(Miaowu &x){ char c;x=0;bool f=0; for(c=getchar();c<'0'||c>'9';c=getchar())f|=(c=='-'); for(;c>='0'&&c<='9';c=getchar())x=(x<<1)+(x<<3)+(c^48); x=(f?-x:x); } const int N=2e5+5; const int O=-20081231; int cas,T,n,p[N]; struct Node{ int id,f; ll a,b,t; bool operator < (const Node &rhs) const{ return t>1; build(ls(u),l,mid),build(rs(u),mid+1,r); pu(u); } inline ll qry(int u,int l,int r,int L,int R){ if(l>=L&&r<=R)return sum[u]; int mid=l+r>>1;ll res=0;pd(u,mid-l+1,r-mid); if(mid>=L)res+=qry(ls(u),l,mid,L,R); if(mid=L&&r<=R)return tag[u]=mx[u]=x,sum[u]=1ll*x*(r-l+1),void(); int mid=l+r>>1;pd(u,mid-l+1,r-mid); if(mid>=L)upd(ls(u),l,mid,L,R,x); if(mid=x?l:-1; int mid=l+r>>1;pd(u,mid-l+1,r-mid); if(mx[ls(u)]>=x)return binary1(ls(u),l,mid,x); return binary1(rs(u),mid+1,r,x); } inline int binary2(int u,int l,int r,ll x){ if(l==r)return sum[u]>x?l:-1; int mid=l+r>>1;pd(u,mid-l+1,r-mid); if(mx[ls(u)]>x)return binary2(ls(u),l,mid,x); return binary2(rs(u),mid+1,r,x); } }sgt; inline bool check(){ ll now=0; for(int i=1;i<=n;i++){ if(a[i].f){ int r=a[i].id,l=r; ll pos=a[i].b; if(sgt.qry(1,1,n,r,r)pos-r){ int qwq=l; l=sgt.binary2(1,1,n,pos-r); now+=1ll*(r-pos)*(qwq-l+1); now+=sgt.qry(1,1,n,l,qwq); sgt.upd(1,1,n,l,qwq,pos-r); } // while(l>=1&&p[l]-l>pos-r)now+=p[l]-pos+r-l,p[l]=pos-r+l,l--; } // cout<<"!! "<a[i].t)return false; } return true; } int main(){ freopen("move.in","r",stdin); freopen("move.out","w",stdout); for(cin>>cas>>T;T;T--){ in(n); for(int i=1;i<=n;i++)in(a[i].a),in(a[i].b),in(a[i].t),p[i]=a[i].a,a[i].id=i,a[i].f=(a[i].b>=a[i].a); stable_sort(a+1,a+n+1); sgt.build(1,1,n); puts(check()?"Yes":"No"); } // cerr<<1.0*clock()/CLOCKS_PER_SEC<