#include <iostream>
#include <queue>
#include <algorithm>
#define N 200005
#define L 1
#define R 1000000000
#define ll long long
using namespace std;
int c,T;
struct node{
int data1;
ll data2;
bool lazy;
bool zzsc;
int lc;
int rc;
int fa;
}ns[31*N];
queue<int> qhs;
int ncnt;
inline int new_node(){
if(qhs.empty()){
ncnt++;
ns[ncnt].data1=0;
ns[ncnt].data2=0;
ns[ncnt].lazy=false;
ns[ncnt].zzsc=false;
ns[ncnt].lc=0;
ns[ncnt].rc=0;
ns[ncnt].fa=0;
return ncnt;
}
int tmp=qhs.front();
qhs.pop();
if(ns[tmp].lc!=0){
qhs.push(ns[tmp].lc);
}
if(ns[tmp].rc!=0){
qhs.push(ns[tmp].rc);
}
ns[tmp].data1=0;
ns[tmp].data2=0;
ns[tmp].lazy=false;
ns[ncnt].zzsc=false;
ns[tmp].lc=0;
ns[tmp].rc=0;
ns[ncnt].fa=0;
return tmp;
}
int root;
inline void pushdown(int id,int l,int r){
if(ns[id].lazy){
int mid=(l+r)>>1;
if(ns[id].lc==0 || ns[ns[id].lc].zzsc==true){
ns[id].lc=new_node();
ns[ns[id].lc].fa=id;
}
ns[ns[id].lc].data1=mid-l+1;
ns[ns[id].lc].data2=1ll*(l+mid)*(mid-l+1)/2;
ns[ns[id].lc].lazy=true;
if(ns[id].rc==0 || ns[ns[id].rc].zzsc==true){
ns[id].rc=new_node();
ns[ns[id].rc].fa=id;
}
ns[ns[id].rc].data1=r-mid;
ns[ns[id].rc].data2=1ll*(mid+1+r)*(r-mid)/2;
ns[ns[id].lc].lazy=true;
ns[id].lazy=false;
}
}
inline void pushup(int id){
ns[id].data1=0;
ns[id].data2=0;
if(ns[id].lc!=0 && ns[ns[id].lc].zzsc==false){
ns[id].data1+=ns[ns[id].lc].data1;
ns[id].data2+=ns[ns[id].lc].data2;
}
if(ns[id].rc!=0 && ns[ns[id].rc].zzsc==false){
ns[id].data1+=ns[ns[id].rc].data1;
ns[id].data2+=ns[ns[id].rc].data2;
}
}
inline void change(int id,int l,int r,int al,int ar){
if(l==al && r==ar){
ns[id].data1=r-l+1;
ns[id].data2=1ll*(l+r)*(r-l+1)/2;
ns[id].lazy=true;
return;
}
pushdown(id,l,r);
int mid=(l+r)>>1;
if(ar<=mid){
if(ns[id].lc==0 || ns[ns[id].lc].zzsc==true){
ns[id].lc=new_node();
ns[ns[id].lc].fa=id;
}
change(ns[id].lc,l,mid,al,ar);
}
else if(al>mid){
if(ns[id].rc==0 || ns[ns[id].rc].zzsc==true){
ns[id].rc=new_node();
ns[ns[id].rc].fa=id;
}
change(ns[id].rc,mid+1,r,al,ar);
}
else{
if(ns[id].lc==0 || ns[ns[id].lc].zzsc==true){
ns[id].lc=new_node();
ns[ns[id].lc].fa=id;
}
if(ns[id].rc==0 || ns[ns[id].rc].zzsc==true){
ns[id].rc=new_node();
ns[ns[id].rc].fa=id;
}
change(ns[id].lc,l,mid,al,mid);
change(ns[id].rc,mid+1,r,mid+1,ar);
}
pushup(id);
}
inline void del(int id,int l,int r,int al,int ar){
if(l==al && r==ar && (!(l==L && r==R))){
if(ns[ns[id].fa].lc==id){
ns[ns[id].fa].lc=0;
}
else{
ns[ns[id].fa].rc=0;
}
qhs.push(id);
return;
}
pushdown(id,l,r);
int mid=(l+r)>>1;
if(ar<=mid){
if(ns[id].lc!=0 && ns[ns[id].lc].zzsc==false){
ns[ns[id].lc].fa=id;
del(ns[id].lc,l,mid,al,ar);
}
}
else if(al>mid){
if(ns[id].rc!=0 && ns[ns[id].rc].zzsc==false){
ns[ns[id].rc].fa=id;
del(ns[id].rc,mid+1,r,al,ar);
}
}
else{
if(ns[id].lc!=0 && ns[ns[id].lc].zzsc==false){
ns[ns[id].lc].fa=id;
del(ns[id].lc,l,mid,al,mid);
}
if(ns[id].rc!=0 && ns[ns[id].rc].zzsc==false){
ns[ns[id].rc].fa=id;
del(ns[id].rc,mid+1,r,mid+1,ar);
}
}
pushup(id);
}
inline int query1(int id,int l,int r,int al,int ar){
if(l==ar && r==ar){
return ns[id].data1;
}
pushdown(id,l,r);
int mid=(l+r)>>1;
if(ar<=mid){
if(ns[id].lc!=0 && ns[ns[id].lc].zzsc==false){
return query1(ns[id].lc,l,mid,al,ar);
}
else{
return 0;
}
}
if(al>mid){
if(ns[id].rc!=0 && ns[ns[id].rc].zzsc==false){
return query1(ns[id].rc,mid+1,r,al,ar);
}
else{
return 0;
}
}
int ans=0;
if(ns[id].lc!=0 && ns[ns[id].lc].zzsc==false){
ans+=query1(ns[id].lc,l,mid,al,mid);
}
if(ns[id].rc!=0 && ns[ns[id].rc].zzsc==false){
ans+=query1(ns[id].rc,mid+1,r,mid+1,ar);
}
return ans;
}
inline ll query2(int id,int l,int r,int al,int ar){
if(l==ar && r==ar){
return ns[id].data2;
}
pushdown(id,l,r);
int mid=(l+r)>>1;
if(ar<=mid){
if(ns[id].lc!=0 && ns[ns[id].lc].zzsc==false){
return query2(ns[id].lc,l,mid,al,ar);
}
else{
return 0;
}
}
if(al>mid){
if(ns[id].rc!=0 && ns[ns[id].rc].zzsc==false){
return query2(ns[id].rc,mid+1,r,al,ar);
}
else{
return 0;
}
}
int ans=0;
if(ns[id].lc!=0 && ns[ns[id].lc].zzsc==false){
ans+=query2(ns[id].lc,l,mid,al,mid);
}
if(ns[id].rc!=0 && ns[ns[id].rc].zzsc==false){
ans+=query2(ns[id].rc,mid+1,r,mid+1,ar);
}
return ans;
}
int query3(int id,int l,int r,int k){
if(l==r){
return l;
}
if(ns[id].lazy){
return l+k-1;
}
int mid=(l+r)>>1;
int zs;
if(ns[id].lc!=0 && ns[ns[id].lc].zzsc==false){
zs=ns[ns[id].lc].data1;
}
else{
zs=0;
}
if(k<=zs){
return query3(ns[id].lc,l,mid,k);
}
else{
if(ns[id].rc!=0 && ns[ns[id].rc].zzsc==false){
return query3(ns[id].rc,mid+1,r,k-zs);
}
else{
return -1;
}
}
}
int n;
struct xz{
int a;
int b;
ll t;
int id;
}xzs[N];
bool cmp1(xz a,xz b){
return a.t<b.t;
}
inline void debug(int id,int l,int r){
if(ns[id].data1==0 || ns[id].zzsc==true){
return;
}
if(l==r){
return;
}
int mid=(l+r)>>1;
debug(ns[id].lc,l,mid);
debug(ns[id].rc,mid+1,r);
}
signed main(){
freopen("move.in","r",stdin);
freopen("move.out","w",stdout);
scanf("%d%d",&c,&T);
while(T--){
ncnt=1;
while(!qhs.empty()){
qhs.pop();
}
ns[ncnt].data1=0;
ns[ncnt].data2=0;
ns[ncnt].lazy=false;
ns[ncnt].zzsc=false;
ns[ncnt].lc=0;
ns[ncnt].rc=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d%lld",&xzs[i].a,&xzs[i].b,&xzs[i].t);
xzs[i].id=i;
change(1,L,R,xzs[i].a,xzs[i].a);
}
sort(xzs+1,xzs+n+1,cmp1);
bool sfhf=true;
for(ll i=1,zt=0;i<=n;i++){
xzs[i].a=query3(1,L,R,xzs[i].id);
if(xzs[i].a==xzs[i].b){
if(zt>xzs[i].t){
sfhf=false;
break;
}
continue;
}
bool sfz=true;
if(xzs[i].a>xzs[i].b){
sfz=false;
}
int efans=-1;
int l=1;
int r=n+5;
if(sfz){
r=min(r,R+1-xzs[i].b);
}
else{
l=min(l,xzs[i].b+1-L);
}
for(;l<=r;){
int mid=(l+r)>>1;
if(i==105){
}
if(sfz){
int zhi=query1(1,L,R,xzs[i].a,xzs[i].b+mid-1)-mid;
if(i==105){
}
if(zhi==0){
efans=mid;
break;
}
else if(zhi<0){
r=mid-1;
}
else{
l=mid+1;
}
}
else{
int zhi=query1(1,L,R,xzs[i].b-mid+1,xzs[i].a)-mid;
if(i==105){
}
if(zhi==0){
efans=mid;
break;
}
else if(zhi<0){
r=mid-1;
}
else{
l=mid+1;
}
}
}
if(sfz){
zt+=1ll*(2*xzs[i].b+efans-1)*efans/2-query2(1,L,R,xzs[i].a,xzs[i].b+efans-1);
del(1,L,R,xzs[i].a,xzs[i].b+efans-1);
change(1,L,R,xzs[i].b,xzs[i].b+efans-1);
}
else{
zt+=query2(1,L,R,xzs[i].b-efans+1,xzs[i].a)-1ll*(2*xzs[i].b-efans+1)*efans/2;
del(1,L,R,xzs[i].b-efans+1,xzs[i].a);
change(1,L,R,xzs[i].b-efans+1,xzs[i].b);
}
if(zt>xzs[i].t){
sfhf=false;
break;
}
}
if(sfhf){
printf("Yes\n");
}
else{
printf("No\n");
}
}
return 0;
}