#include<bits/stdc++.h>
#define F(i,a,b) for(int i=(a);i<=(b);++i)
#define dF(i,a,b) for(int i=(a);i>=(b);--i)
#define rep(i,a,b,c) for(int i=(a);i<=(b);i+=(c))
#define per(i,a,b,c) for(int i=(a);i>=(b);i-=(c))
#define ll long long
#define ull unsigned long long
#define uint unsigned
#define pb push_back
#define fi first
#define se second
#define mkp make_pair
#define pii pair<int,int>
#define SZ(x) ((int)x.size())
#define inf 1000000000
#define infll 1000000000000000000ll
using namespace std;
void fre(){
freopen("move.in","r",stdin),freopen("move.out","w",stdout);
}
int testid,multi;
const int maxn=200005;
int a[maxn],b[maxn],n,p[maxn];
ll t[maxn],d[maxn];
ll S(int l,int r){ return (1ll*(r-l+1)*(l+r))>>1; }
namespace seg{
#define ls (o<<1)
#define rs (o<<1|1)
int tag[maxn<<2],len[maxn<<2];
ll sum[maxn<<2];
inline void build(int o,int l,int r){
tag[o]=-1,len[o]=r-l+1;
if(l==r)return sum[o]=a[l],void();
int mid=(l+r)>>1; build(ls,l,mid),build(rs,mid+1,r),sum[o]=sum[ls]+sum[rs];
}
inline void maketag(int o,int v){ sum[o]=S(v,v+len[o]-1),tag[o]=v; }
inline void pushdown(int o){ if(tag[o]>0)maketag(ls,tag[o]),maketag(rs,tag[o]+len[ls]),tag[o]=-1; }
inline void update(int o,int l,int r,int ql,int qr,int x){
if(ql<=l&&qr>=r)return maketag(o,x+l-ql),void();
int mid=(l+r)>>1; pushdown(o);
if(ql<=mid)update(ls,l,mid,ql,qr,x);
if(qr>mid)update(rs,mid+1,r,ql,qr,x);
sum[o]=sum[ls]+sum[rs];
}
inline ll query(int o,int l,int r,int ql,int qr){
if(ql<=l&&qr>=r)return sum[o];
int mid=(l+r)>>1; ll res=0; pushdown(o);
if(ql<=mid)res+=query(ls,l,mid,ql,qr);
if(qr>mid)res+=query(rs,mid+1,r,ql,qr);
return res;
}
inline int qpos(int pos){
int o=1,l=1,r=n;
while(l<r){
pushdown(o); int mid=(l+r)>>1;
if(pos<=mid)o=ls,r=mid;
else o=rs,l=mid+1;
}
return sum[o];
}
}
void Solve(int nowid){
cin>>n;
F(i,1,n)cin>>a[i]>>b[i]>>t[i],d[i]=t[i]-abs(a[i]-b[i]),p[i]=i;
F(i,1,n)if(d[i]<0)return cout<<"No\n",void();
sort(p+1,p+n+1,[&](int x,int y){ return t[x]<t[y]; });
seg::build(1,1,n);
ll tim=0;
F(_,1,n){
const int u=p[_];
if(seg::qpos(u)==b[u])continue;
if(seg::qpos(u)<b[u]){
int l=1,r=n-u,res=0;
while(l<=r){
int mid=(l+r)>>1;
if(seg::qpos(u+mid)<=b[u]+mid-1)res=mid,l=mid+1;
else r=mid-1;
}
tim+=S(b[u],b[u]+res);
tim-=seg::query(1,1,n,u,u+res);
if(tim>t[u])return cout<<"No\n",void();
seg::update(1,1,n,u,u+res,b[u]);
} else{
int l=1,r=u-1,res=0;
while(l<=r){
int mid=(l+r)>>1;
if(seg::qpos(u-mid)>=b[u]-mid+1)res=mid,l=mid+1;
else r=mid-1;
}
tim+=seg::query(1,1,n,u-res,u);
tim-=S(b[u]-res,b[u]);
if(tim>t[u])return cout<<"No\n",void();
seg::update(1,1,n,u-res,u,b[u]-res);
}
}
cout<<"Yes\n";
}
signed main(){
fre();
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>testid>>multi; F(_,1,multi)Solve(_);
}