#include<bits/stdc++.h>
using namespace std;
#define i64 long long
const int N=2e5+5;
int T=1,_;
int n;
i64 now;
struct node{
int a,b,id;
i64 t;
}a[N];
struct TR{
i64 sum1,sum2,len,lz;
TR operator+(const TR &a)const{
return {sum1+a.sum1,sum2+sum1*a.len+a.sum2,len+a.len,0};
}
}tr[N<<2];
struct Seg{
#define s1 (s<<1)
#define s2 (s<<1|1)
inline void push_up(int s) { tr[s]=tr[s1]+tr[s2]; }
inline void push_down(int s){
if(!tr[s].lz) return;
tr[s1].sum1=tr[s].lz*tr[s1].len;
tr[s1].sum2=tr[s].lz*(tr[s1].len+1)*tr[s1].len/2;
tr[s1].lz=tr[s].lz;
tr[s2].sum1=tr[s].lz*tr[s2].len;
tr[s2].sum2=tr[s].lz*(tr[s2].len+1)*tr[s2].len/2;
tr[s2].lz=tr[s].lz;
tr[s].lz=0;
}
void build(int s,int l,int r){
if(l==r){
tr[s].sum1=tr[s].sum2=a[l].a-a[l-1].a;
tr[s].len=1;
tr[s].lz=0;
return;
}
int mid=l+r>>1;
build(s1,l,mid); build(s2,mid+1,r);
push_up(s);
}
i64 get_sum1(int s,int l,int r,int le,int ri){
if(le<=l&&r<=ri) return tr[s].sum1;
push_down(s);
int mid=l+r>>1;
i64 ret=0;
if(le<=mid) ret+=get_sum1(s1,l,mid,le,ri);
if(ri>mid) ret+=get_sum1(s2,mid+1,r,le,ri);
return ret;
}
TR get_sum2(int s,int l,int r,int le,int ri){
if(le<=l&&r<=ri) return tr[s];
push_down(s);
int mid=l+r>>1;
TR ret;
if(ri<=mid) ret=get_sum2(s1,l,mid,le,ri);
else if(le>mid) ret=get_sum2(s2,mid+1,r,le,ri);
else ret=get_sum2(s1,l,mid,le,ri)+get_sum2(s2,mid+1,r,le,ri);
return ret;
}
void update(int s,int l,int r,int le,int ri,int val){
if(le<=l&&r<=ri){
tr[s].lz=val;
tr[s].sum1=tr[s].lz*tr[s].len;
tr[s].sum2=tr[s].lz*(tr[s].len+1)*tr[s].len/2;
return;
}
push_down(s);
int mid=l+r>>1;
if(le<=mid) update(s1,l,mid,le,ri,val);
if(ri>mid) update(s2,mid+1,r,le,ri,val);
push_up(s);
}
#undef s1
#undef s2
}Tr;
inline int get_to(int id,int b){
int l=b,r=b+n-id,mid;
while(l<r){
mid=l+r+1>>1;
if(Tr.get_sum1(1,1,n,1,id+mid-b)<=mid) l=mid;
else r=mid-1;
}
return l-b+1;
}
inline int get_to2(int id,int b){
int l=b-id+1,r=b,mid;
while(l<r){
mid=l+r>>1;
if(Tr.get_sum1(1,1,n,1,id-(b-mid))>=mid) r=mid;
else l=mid+1;
}
return b-l+1;
}
inline i64 get_t(int s,int b,int id){
i64 ans=1ll*(b+b+s-1)*s/2;
ans-=(s>1?Tr.get_sum2(1,1,n,id+1,id+s-1).sum2:0)+Tr.get_sum1(1,1,n,1,id)*s;
return ans;
}
inline i64 get_t2(int s,int b,int id){
i64 ans=-1ll*(b+b-s+1)*s/2;
ans+=(s>1?Tr.get_sum2(1,1,n,id-s+2,id).sum2:0)+Tr.get_sum1(1,1,n,1,id-s+1)*s;
return ans;
}
void solve(){
now=0;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i].a>>a[i].b>>a[i].t,a[i].id=i;
Tr.build(1,1,n);
sort(a+1,a+1+n,[](node x,node y){
return x.t<y.t;
});
for(int i=1,id,s,fl;i<=n;i++){
id=a[i].id;
if(Tr.get_sum1(1,1,n,1,id)==a[i].b) continue;
if(Tr.get_sum1(1,1,n,1,id)<a[i].b) fl=1;
else fl=0;
s=(fl?get_to(id,a[i].b):get_to2(id,a[i].b));
now+=(fl?get_t(s,a[i].b,id):get_t2(s,a[i].b,id));
if(now>a[i].t){
cout<<"No\n";
return;
}
if(fl){
if(id+s<=n) Tr.update(1,1,n,id+s,id+s,Tr.get_sum1(1,1,n,1,id+s)-(a[i].b+s-1));
if(s>1) Tr.update(1,1,n,id+1,id+s-1,1);
Tr.update(1,1,n,id,id,Tr.get_sum1(1,1,n,id,id)+a[i].b-Tr.get_sum1(1,1,n,1,id));
}
else{
if(id<n) Tr.update(1,1,n,id+1,id+1,Tr.get_sum1(1,1,n,1,id+1)-a[i].b);
if(s>1) Tr.update(1,1,n,id-s+2,id,1);
Tr.update(1,1,n,id-s+1,id-s+1,a[i].b-s+1-(id-s>0?Tr.get_sum1(1,1,n,1,id-s):0));
}
}
cout<<"Yes\n";
}
int main(){
freopen("move.in","r",stdin);
freopen("move.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cin>>_>>T;
while(T--) solve();
return 0;
}