#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define pii pair<int,int>
#define MP make_pair
template <class Miaowu>
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<rhs.t;
}
}a[N];
struct SGT{
inline int ls(int u){return u<<1;}
inline int rs(int u){return u<<1|1;}
ll mx[N<<2],tag[N<<2],sum[N<<2];
inline void pu(int u){
mx[u]=max(mx[ls(u)],mx[rs(u)]);
sum[u]=sum[ls(u)]+sum[rs(u)];
}
inline void pd(int u,int l,int r){
if(tag[u]==O)return;
tag[ls(u)]=tag[rs(u)]=mx[ls(u)]=mx[rs(u)]=tag[u];
sum[ls(u)]=1ll*tag[u]*l,sum[rs(u)]=1ll*tag[u]*r,tag[u]=O;
}
inline void build(int u,int l,int r){
tag[u]=O;
if(l==r)return mx[u]=tag[u]=sum[u]=p[l]-l,void();
int mid=l+r>>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<R)res+=qry(rs(u),mid+1,r,L,R);
return res;
}
inline void upd(int u,int l,int r,int L,int R,ll x){
if(l>=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<R)upd(rs(u),mid+1,r,L,R,x);
pu(u);
}
inline int binary1(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 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-l){
int qwq=r;
r=sgt.binary1(1,1,n,pos-l);
if(r==-1)r=n;
else r--;
now+=1ll*(pos-l)*(r-qwq+1);
now-=sgt.qry(1,1,n,qwq,r);
sgt.upd(1,1,n,qwq,r,pos-l);
}
}
else{
int l=a[i].id,r=l;
ll pos=a[i].b;
if(sgt.qry(1,1,n,l,l)>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);
}
}
if(now>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");
}
return 0;
}