#include<bits/stdc++.h>
using namespace std;
const int N=200005;
long long a[N],b[N],t[N],qz[N];
struct sx{
long long tt;
int num;
}c[N];
struct jk{
long long st,val;
}d[N];
int v[N],l[N],r[N],tr[N*4],m[N],zu[N*4],yo[N*4];
long long read() {
long long jy=0;
char ch=getchar();
while(ch<'0'||ch>'9')
ch=getchar();
while(ch>='0'&&ch<='9') {
jy=jy*10+ch-'0';
ch=getchar();
}
return jy;
}
bool cmp(sx X,sx Y) {
return X.tt<Y.tt;
}
bool cmb(jk X,jk Y) {
return X.st<Y.st;
}
int find(int le,int ri,int op,int zuo,int you,int opt) {
if(le>you||ri<zuo) return 0;
if(le>=zuo&&ri<=you) {
if(!tr[op]) return 0;
if(le==ri) return le;
if(!tr[(op<<1)+1]||(opt==2&&tr[op<<1])) return find(le,(le+ri)>>1,op<<1,zuo,you,opt);
else return find(((le+ri)>>1)+1,ri,(op<<1)+1,zuo,you,opt);
}
zu[op]=find(le,(le+ri)>>1,op<<1,zuo,you,opt);
yo[op]=find(((le+ri)>>1)+1,ri,(op<<1)+1,zuo,you,opt);
if(!yo[op]||(opt==2&&zu[op])) return zu[op];
else return yo[op];
}
void add(int le,int ri,int op,int w) {
++tr[op];
if(le==ri) return;
if(w<=((le+ri)>>1)) add(le,(le+ri)>>1,op<<1,w);
else add(((le+ri)>>1)+1,ri,(op<<1)+1,w);
}
int main() {
freopen("move.in","r",stdin);
freopen("move.out","w",stdout);
int cc=(int)read(),T=(int)read();
while(T--) {
int n=(int)read(),cnt=0,col=0;
bool vis=0;
long long maxt=0,last=0;
for(int i=1;i<=n*4;++i)
tr[i]=0;
for(int i=1;i<=n;++i) {
a[i]=read();
b[i]=read();
t[i]=read();
}
for(int i=1;i<=n;++i) {
qz[i]=qz[i-1]+a[i];
if(i<n&&a[i+1]<=b[i]) v[i]=1;
else if(i>1&&a[i-1]>=b[i]) v[i]=2;
else v[i]=0;
}
v[0]=v[n+1]=0;
for(int i=1;i<=n;++i) {
if(!v[i]&&v[i-1]!=1&&v[i+1]!=2) {
l[++cnt]=i;
r[cnt]=i;
}
else if(v[i]==1&&v[i-1]!=1) l[++cnt]=i;
else if(!v[i]&&v[i-1]==1) r[cnt]=i;
else if(!v[i]&&v[i+1]==2) r[++cnt]=i;
else if(v[i]==2&&v[i+1]!=2) l[cnt]=i;
}
for(int i=1;i<=cnt;++i) {
int x=min(l[i],r[i]),y=l[i]+r[i]-x;
for(int J=x;J<=y;++J) {
c[J-x+1].tt=t[J];
c[J-x+1].num=J;
}
int nn=y-x+1;
sort(c+1,c+nn+1,cmp);
for(int k=1;k<=nn;++k) {
int j=c[k].num;
long long sum=0;
if(v[l[i]]==2||(l[i]==r[i]&&b[l[i]]<a[l[i]])) {
int ll=max(find(1,n,1,r[i],j,1)+1,r[i]),rr=j,z=find(1,n,1,j,l[i],2);
if(m[z]>j) z=0;
while(ll<rr) {
int mid=(ll+rr)>>1;
if((z&&mid>=m[z])||a[mid]>b[j]-j+mid) rr=mid;
else ll=mid+1;
}
m[j]=ll;
sum=sum+qz[j]-qz[ll-1]-(b[j]+b[j]-j+ll)*(j-ll+1)/2;
if(v[l[i]]==2&&z) sum=sum-qz[j]+qz[max(m[z],ll)-1]+(b[z]-z+max(m[z],ll)+b[z]-z+j)*(j-max(m[z],ll)+1)/2;
if(v[l[i]]==2&&z&&b[z]-z+j==b[j]) sum=0;
}
else {
int ll=j,rr=find(1,n,1,j,r[i],2)-1,z=max(find(1,n,1,l[i],j,1),l[i]-1);
if(m[z]<j) z=l[i]-1;
if(rr==-1) rr=r[i];
while(ll<rr) {
int mid=(ll+rr+1)>>1;
if((z>=l[i]&&mid<=m[z])||a[mid]<=b[j]-j+mid) ll=mid;
else rr=mid-1;
}
m[j]=ll;
sum=sum-qz[ll]+qz[j-1]+(b[j]+b[j]-j+ll)*(ll-j+1)/2;
if(v[l[i]]==1&&z>=l[i]) sum=sum-qz[j-1]+qz[min(m[z],ll)]-(b[z]-z+min(m[z],ll)+b[z]-z+j)*(min(m[z],ll)-j+1)/2;
if(v[l[i]]==1&&z>=l[i]&&b[z]-z+j==b[j]) sum=0;
}
add(1,n,1,j);
d[++col].val=sum;
d[col].st=t[j]-sum;
}
}
sort(d+1,d+col+1,cmb);
for(int i=1;!vis&&i<=col;++i) {
if(d[i].st+d[i].val>maxt) last+=(d[i].st+d[i].val-maxt);
maxt=max(maxt,d[i].st+d[i].val);
if(last<d[i].val) vis=1;
last-=d[i].val;
}
if(vis) printf("No\n");
else printf("Yes\n");
}
return 0;
}