#include<bits/stdc++.h>
#define fi first
#define se second
#define pb emplace_back
#define mp make_pair
using namespace std;
typedef long long ll;
const int maxn=2e5+10;
void cmax(int &x,int y){ x=x>y?x:y; }
void cmin(int &x,int y){ x=x<y?x:y; }
struct node{
int a,b; ll t;
}a[maxn]; int p[maxn],n;
bool cmp(int x,int y){ return a[x].t<a[y].t; }
ll V(ll l,ll r){ return (l+r)*(r-l+1)/2; }
struct SegmentTree{
#define ls (p<<1)
#define rs (p<<1|1)
#define mid ((l+r)>>1)
int mx[maxn<<2],mn[maxn<<2],len[maxn<<2],pos[maxn<<2]; ll sum[maxn<<2];
void pushup(int p){
mx[p]=max(mx[ls],mx[rs]);
mn[p]=min(mn[ls],mn[rs]);
sum[p]=sum[ls]+sum[rs];
len[p]=len[ls]+len[rs];
}
void pushdown(int p){
if(!pos[p]) return ;
mn[ls]=pos[p];
mx[ls]=pos[p]+len[ls]-1;
sum[ls]=V(mn[ls],mx[ls]);
mn[rs]=pos[p]+len[ls];
mx[rs]=pos[p]+len[p]-1;
sum[rs]=V(mn[rs],mx[rs]);
pos[ls]=pos[p];
pos[rs]=pos[p]+len[ls];
pos[p]=0;
}
void build(int p,int l,int r){
pos[p]=0;
if(l==r){ mx[p]=mn[p]=sum[p]=a[l].a; len[p]=1; return ; }
build(ls,l,mid); build(rs,mid+1,r);
pushup(p);
}
void modify(int p,int l,int r,int ql,int qr,int z){
if(ql<=l&&r<=qr){
z+=l-ql; mn[p]=z; mx[p]=z+len[p]-1;
sum[p]=V(mn[p],mx[p]); pos[p]=z; return ;
}
pushdown(p);
if(ql<=mid) modify(ls,l,mid,ql,qr,z);
if(qr>mid) modify(rs,mid+1,r,ql,qr,z);
pushup(p);
}
int find1(int p,int l,int r,int pos,int z){
if(r<z) return 0;
if(l==r) return l-z+(mx[p]<pos+l-z);
pushdown(p);
if(mid<z) return find1(rs,mid+1,r,pos,z);
if(mx[ls]<pos+mid-z) return find1(rs,mid+1,r,pos,z);
else return find1(ls,l,mid,pos,z);
}
int find2(int p,int l,int r,int pos,int z){
if(l>z) return 0;
if(l==r) return z-l+(mn[p]>pos-(z-l));
pushdown(p);
if(mid>z) return find2(ls,l,mid,pos,z);
if(mn[rs]>pos-(z-mid)) return find2(ls,l,mid,pos,z);
else return find2(rs,mid+1,r,pos,z);
}
int get(int p,int l,int r,int x){
if(l==r) return mx[p];
pushdown(p);
if(x<=mid) return get(ls,l,mid,x);
else return get(rs,mid+1,r,x);
}
ll query(int p,int l,int r,int ql,int qr){
if(ql<=l&&r<=qr) return sum[p];
pushdown(p); ll res=0;
if(ql<=mid) res+=query(ls,l,mid,ql,qr);
if(qr>mid) res+=query(rs,mid+1,r,ql,qr);
return res;
}
}seg;
void solve(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i].a>>a[i].b>>a[i].t;
for(int i=1;i<=n;i++) p[i]=i;
sort(p+1,p+1+n,cmp); ll tim=0;
seg.build(1,1,n);
for(int i=1;i<=n;i++){
int u=p[i];
int pos=seg.get(1,1,n,u);
if(pos==a[u].b){
if(tim>a[u].t){ cout<<"No"<<endl; return ; }
continue;
}
if(pos<a[u].b){
int cnt=seg.find1(1,1,n,a[u].b,u);
tim+=V(a[u].b,a[u].b+cnt-1)-seg.query(1,1,n,u,u+cnt-1);
if(tim>a[u].t){ cout<<"No"<<endl; return ; }
seg.modify(1,1,n,u,u+cnt-1,a[u].b);
}else{
int cnt=seg.find2(1,1,n,a[u].b,u);
tim+=seg.query(1,1,n,u-cnt+1,u)-V(a[u].b-cnt+1,a[u].b);
if(tim>a[u].t){ cout<<"No"<<endl; return ; }
seg.modify(1,1,n,u-cnt+1,u,a[u].b-cnt+1);
}
}
cout<<"Yes"<<endl;
}
int main(){
freopen("move.in","r",stdin);
freopen("move.out","w",stdout);
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int cc,T; cin>>cc>>T;
while(T--) solve();
return 0;
}