#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int C,T,n,a[N],b[N],L,ll[N],rr[N],tp1[N],tp2[N];
int mn[N<<2],sz[N<<2],mx[N<<2],tag[N<<2],cnt;long long tr[N<<2],now,sum,t[N];
struct node {
long long t;int id;
bool operator<(const node &u) const {return t<u.t;}
}c[N];
inline void build(int u,int l,int r) {
sz[u]=r-l+1;mn[u]=a[l];mx[u]=a[r];tag[u]=0;
if(l==r) return tr[u]=a[l],void();
int mid=(l+r)>>1;
build(u<<1,l,mid);build(u<<1|1,mid+1,r);
return tr[u]=tr[u<<1]+tr[u<<1|1],void();
}
inline void ff(int u,int k) {
tr[u]=sz[u]*1ll*k;tag[u]=k;mn[u]=mx[u]=k;
return ;
}
inline void down(int u) {
if(!tag[u]) return ;
ff(u<<1,tag[u]);ff(u<<1|1,tag[u]);
tag[u]=0;
return ;
}
inline void query(int u,int l,int r,int L,int R) {
if(!sz[u]||r<L||mn[u]>R) return ;
if(l>=L&&mx[u]<=R) {
cnt+=sz[u];
sum+=tr[u];
return ;
}
int mid=(l+r)>>1;down(u);
query(u<<1,l,mid,L,R);query(u<<1|1,mid+1,r,L,R);
return ;
}
inline void clear(int u,int l,int r,int x) {
if(l==r) return tr[u]=sz[u]=0,mn[u]=2e9,mx[u]=0,void();
int mid=(l+r)>>1;down(u);
if(x<=mid) clear(u<<1,l,mid,x);
else clear(u<<1|1,mid+1,r,x);
tr[u]=tr[u<<1]+tr[u<<1|1];sz[u]=sz[u<<1]+sz[u<<1|1];
mn[u]=min(mn[u<<1],mn[u<<1|1]);mx[u]=max(mx[u<<1],mx[u<<1|1]);
return ;
}
inline void upd(int u,int l,int r,int L,int R) {
if(r<L||mn[u]>R) return ;
if(l>=L&&mx[u]<=R) {
ff(u,R);
return ;
}
int mid=(l+r)>>1;down(u);
upd(u<<1,l,mid,L,R);upd(u<<1|1,mid+1,r,L,R);
tr[u]=tr[u<<1]+tr[u<<1|1];sz[u]=sz[u<<1]+sz[u<<1|1];
mn[u]=min(mn[u<<1],mn[u<<1|1]);mx[u]=max(mx[u<<1],mx[u<<1|1]);
return ;
}
inline void work() {
scanf("%d",&n);
for(int i=1;i<=n;++i) scanf("%d%d%lld",a+i,b+i,t+i);L=0;
for(int i=1;i<=n;++i) {
if((a[i]>b[i])!=(a[i-1]>b[i-1])) ll[++L]=i;
rr[L]=i;
}
for(int i=1;i<=L;++i) {
if(a[ll[i]]<=b[ll[i]]) {
int h=b[rr[i-1]]-a[ll[i]]+100;
for(int j=ll[i];j<=rr[i];++j) a[j]+=h,b[j]+=h;
}
else {
int h=b[ll[i]];
for(int j=ll[i];j<=rr[i];++j) {
a[j]-=h;b[j]-=h;
}
h=a[rr[i]];
for(int j=ll[i];j<=rr[i];++j) {
tp1[j]=a[rr[i]+ll[i]-j];tp2[j]=b[rr[i]+ll[i]-j];
tp1[j]=h-tp1[j];tp2[j]=h-tp2[j];
}
h=b[rr[i-1]]+100;
for(int j=ll[i];j<=rr[i];++j) a[j]=tp1[j]+h,b[j]=tp2[j]+h;
for(int j=ll[i];j<=(ll[i]+rr[i])/2;++j) swap(t[j],t[ll[i]+rr[i]-j]);
}
}
for(int i=1;i<=n;++i) a[i]-=i,b[i]-=i;
for(int i=1;i<=n;++i) {
c[i]={t[i],i};
}
sort(c+1,c+1+n);
build(1,1,n);now=0;
for(int i=1;i<=n;++i) {
int x=c[i].id;
cnt=0;sum=0;
query(1,1,n,x,b[x]);
now+=b[x]*1ll*cnt-sum;
clear(1,1,n,x);upd(1,1,n,x+1,b[x]);
if(now>c[i].t) return printf("No\n"),void();
}
printf("Yes\n");
return ;
}
int main() {
freopen("move.in","r",stdin);
freopen("move.out","w",stdout);
scanf("%d%d",&C,&T);
while(T--) work();
return 0;
}