#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <cstdlib>
#include <cstdint>
#include <random>
#include <functional>
#include <vector>
#include <queue>
#include <stack>
#include <bitset>
#include <unordered_set>
#include <unordered_map>
#include <set>
#include <map>
typedef long long LL;
typedef unsigned long long ull;
typedef std::pair<int,int> PII;
typedef std::pair<LL,LL> PLL;
#define rep(i,l,r) for(int i(l);i<=r;++i)
#define per(i,r,l) for(int i(r);i>=l;--i)
#define ls(p) (p<<1)
#define rs(p) (p<<1|1)
template<typename T>T min(T a,T b){return a<b?a:b;}
template<typename T>T max(T a,T b){return a>b?a:b;}
const auto N = 200010;
const auto M = 0;
const auto mod = 0;
const auto INF = 0x3f3f3f3f;
int c,T;
int n,p[N];
int a[N],b[N];
LL t[N],now;
LL tr[N<<2];
LL s[N<<2];
void pushup(int p){tr[p]=tr[ls(p)]+tr[rs(p)];}
void build(int p,int l,int r){
s[p]=INF;
if(l==r){tr[p]=a[l];return ;}
int mid=(l+r)>>1;
build(ls(p),l,mid);
build(rs(p),mid+1,r);
pushup(p);
}
void addtag(int p,LL x,int l,int r){tr[p]=(x+x+(r-l))*(r-l+1)>>1;s[p]=x;}
void pushdown(int p,int l,int r){
if(s[p]==INF){return ;}
int mid=(l+r)>>1;
addtag(ls(p),s[p],l,mid);
addtag(rs(p),s[p]+mid-l+1,mid+1,r);
s[p]=INF;
}
void update(int p,int pl,int pr,int l,int r,int x){
if(pl>=l && pr<=r){addtag(p,x+(pl-l),pl,pr);return ;}
pushdown(p,pl,pr);
int mid=(pl+pr)>>1;
if(mid>=l){update(ls(p),pl,mid,l,r,x);}
if(mid<r){update(rs(p),mid+1,pr,l,r,x);}
pushup(p);
}
LL query(int p,int pl,int pr,int l,int r){
if(pl>=l && pr<=r){return tr[p];}
pushdown(p,pl,pr);
int mid=(pl+pr)>>1;
LL res=0;
if(mid>=l){res+=query(ls(p),pl,mid,l,r);}
if(mid<r){res+=query(rs(p),mid+1,pr,l,r);}
return res;
}
LL left(int x){
int l=1,r=x;
while(l<r){
int mid=(l+r)>>1;
if(query(1,1,n,mid,mid)<=b[x]-x+mid){l=mid+1;}
else{r=mid;}
}
int y=r;
LL res=query(1,1,n,y,x);
update(1,1,n,y,x,b[x]-x+y);
res-=query(1,1,n,y,x);
return res;
}
LL right(int x){
int l=x,r=n;
while(l<r){
int mid=(l+r+1)>>1;
if(query(1,1,n,mid,mid)>=b[x]+mid-x){r=mid-1;}
else{l=mid;}
}
int y=l;
LL res=query(1,1,n,x,y);
update(1,1,n,x,y,b[x]);
res=query(1,1,n,x,y)-res;
return res;
}
int main(){
freopen("move.in","r",stdin);
freopen("move.out","w",stdout);
scanf("%d%d",&c,&T);
while(T--){
scanf("%d",&n);now=0;
rep(i,1,n){scanf("%d%d%lld",&a[i],&b[i],&t[i]);p[i]=i;}
build(1,1,n);
std::sort(p+1,p+1+n,[](int a,int b){return t[a]<t[b];});
bool f=1;
rep(i,1,n){
if(b[p[i]]<=query(1,1,n,p[i],p[i])){now+=left(p[i]);}
else{now+=right(p[i]);}
if(now>t[p[i]]){f=0;break;}
}
if(f){puts("Yes");}
else{puts("No");}
}
return 0;
}