#include<bits/stdc++.h>
using namespace std;
const int maxn=200005;
int C,T;
int n;
struct node{
int a,b,id;
long long t;
}s[maxn];
int k[maxn];
bool cmp1(node g,node h){
if(g.t!=h.t) return g.t<h.t;
else return g.id<h.id;
}
bool cmp2(node g,node h){
return g.id<h.id;
}
long long ttt;
int op;
bool lz1[4*maxn];
long long lz3[4*maxn],sum[4*maxn];
bool flg;
void pushdown(int id,int l,int r){
if(lz1[id]==1){
int mid=(l+r)/2;
lz1[id*2]=1;
lz1[id*2+1]=1;
lz3[id*2]=lz3[id];
lz3[id*2+1]=lz3[id];
sum[id*2]=1LL*(mid-l+1)*lz3[id];
sum[id*2+1]=1LL*(r-mid)*lz3[id];
lz1[id]=0;
}
}
void pushup(int id){
sum[id]=sum[id*2]+sum[id*2+1];
}
void build(int id,int l,int r){
lz1[id]=0;
if(l==r){
sum[id]=l-s[l].a;
return;
}
int mid=(l+r)/2;
build(id*2,l,mid);
build(id*2+1,mid+1,r);
pushup(id);
}
void update(int id,int l,int r,int x,int y,long long val){
if((x<=l)&&(r<=y)){
lz1[id]=1;
lz3[id]=val;
sum[id]=val*(r-l+1);
return;
}
pushdown(id,l,r);
int mid=(l+r)/2;
if(x<=mid) update(id*2,l,mid,x,y,val);
if(y>mid) update(id*2+1,mid+1,r,x,y,val);
pushup(id);
}
long long query(int id,int l,int r,int x,int y){
if((x<=l)&&(r<=y)){
return sum[id];
}
pushdown(id,l,r);
long long res=0;
int mid=(l+r)/2;
if(x<=mid) res+=query(id*2,l,mid,x,y);
if(y>mid) res+=query(id*2+1,mid+1,r,x,y);
return res;
}
long long findd(int id,int l,int r,int x){
if(l==r){
return sum[id];
}
pushdown(id,l,r);
int mid=(l+r)/2;
if(x<=mid) return findd(id*2,l,mid,x);
else return findd(id*2+1,mid+1,r,x);
}
int chk(long long val,int x,bool op){
int res,l,r,mid;
if(op==1){
res=x,l=x,r=n;
while(l<=r){
mid=(l+r)/2;
if(findd(1,1,n,mid)>=val) res=max(res,mid),l=mid+1;
else r=mid-1;
}
return res;
} else{
res=x,l=1,r=x;
while(l<=r){
mid=(l+r)/2;
if(findd(1,1,n,mid)<=val) res=min(res,mid),r=mid-1;
else l=mid+1;
}
return res;
}
}
int main(){
freopen("move.in","r",stdin);
freopen("move.out","w",stdout);
cin>>C>>T;
while(T--){
flg=1;
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[i].a>>s[i].b>>s[i].t;
s[i].id=i;
}
build(1,1,n);
sort(s+1,s+1+n,cmp1);
for(int i=1;i<=n;i++) k[i]=s[i].id;
sort(s+1,s+1+n,cmp2);
ttt=0;
int j=0;
for(int i=1;i<=n;i++){
j=k[i];
if(s[j].a==s[j].b) continue;
else if(s[j].a<s[j].b){
if((C==13)||(C==19)||(C==20)) op=j;
else op=chk(j-s[j].b,j,1);
ttt+=1LL*(s[j].b-j)*(op-j+1);
ttt+=query(1,1,n,j,op);
if(ttt>s[j].t){
flg=0; break;
}
update(1,1,n,j,op,j-s[j].b);
}
else{
op=chk(j-s[j].b,j,0);
ttt-=1LL*(s[j].b-j)*(j-op+1);
ttt-=query(1,1,n,op,j);
if(ttt>s[j].t){
flg=0; break;
}
update(1,1,n,op,j,j-s[j].b);
}
}
if(flg) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}