#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll Read() {
ll x = 0; int sig = 1; char c = getchar();
while(!isdigit(c)) { if(c == '-') sig = -1; c = getchar(); }
while(isdigit(c)) x = (x << 3) + (x << 1) + (c ^ 48), c = getchar();
return x * sig;
}
void Write(ll x) {
if(x < 0) putchar('-'), x = -x;
if(x > 9) Write(x / 10);
putchar((x % 10) ^ 48);
}
const int N = 200005, inf = 2e9;
int n;
struct Box {
int a, b, id; ll t;
friend bool operator <(Box x, Box y) { return x.t < y.t; }
}p[N];
struct SegTree {
struct tNode {
int l, r, lval, rval, tag; ll sum;
inline void Tag(int t) { tag = lval = rval = t, sum = 1ll * t * (r - l + 1); }
}a[N << 2];
void PushUp(int u) { a[u].lval = a[u << 1].lval, a[u].rval = a[u << 1 | 1].rval, a[u].sum = a[u << 1].sum + a[u << 1 | 1].sum; }
void PushDown(int u) {
int &t = a[u].tag;
if(t != inf) a[u << 1].Tag(t), a[u << 1 | 1].Tag(t), t = inf;
}
void Build(int u, int l, int r) {
a[u].l = l, a[u].r = r, a[u].tag = inf;
if(l == r) { a[u].lval = a[u].rval = a[u].sum = p[l].a; return ; }
int mid = (l + r) >> 1;
Build(u << 1, l, mid), Build(u << 1 | 1, mid + 1, r), PushUp(u);
}
void Modify(int u, int ml, int mr, int y) {
int l = a[u].l, r = a[u].r, mid = (l + r) >> 1;
if(ml <= l && r <= mr) { a[u].Tag(y); return ; }
PushDown(u);
if(ml <= mid) Modify(u << 1, ml, mr, y);
if(mr > mid) Modify(u << 1 | 1, ml, mr, y);
PushUp(u);
}
int Query(int u, int p) {
int l = a[u].l, r = a[u].r, mid = (l + r) >> 1;
if(l == r) return a[u].lval;
PushDown(u);
return p <= mid ? Query(u << 1, p) : Query(u << 1 | 1, p);
}
ll Query_Sum(int u, int ql, int qr) {
int l = a[u].l, r = a[u].r, mid = (l + r) >> 1; ll res = 0;
if(ql <= l && r <= qr) return a[u].sum;
PushDown(u);
if(ql <= mid) res += Query_Sum(u << 1, ql, qr);
if(qr > mid) res += Query_Sum(u << 1 | 1, ql, qr);
return res;
}
int Search(int u, int val) {
int l = a[u].l, r = a[u].r, mid = (l + r) >> 1;
if(l == r) return l;
PushDown(u);
return a[u << 1 | 1].lval >= val ? Search(u << 1, val) : Search(u << 1 | 1, val);
}
int Search2(int u, int val) {
int l = a[u].l, r = a[u].r, mid = (l + r) >> 1;
if(l == r) return l;
PushDown(u);
return a[u << 1].rval <= val ? Search2(u << 1 | 1, val) : Search2(u << 1, val);
}
}seg;
void Solve() {
int i; n = Read();
for(i = 1; i <= n; i++) p[i].a = Read() - i, p[i].b = Read() - i, p[i].t = Read(), p[i].id = i;
seg.Build(1, 1, n), stable_sort(p + 1, p + n + 1);
ll curt = 0;
for(i = 1; i <= n; i++) {
int curp = seg.Query(1, p[i].id);
if(curp > p[i].b) {
int mp = seg.Search2(1, p[i].b);
curt += seg.Query_Sum(1, mp, p[i].id) - 1ll * p[i].b * (p[i].id - mp + 1);
seg.Modify(1, mp, p[i].id, p[i].b);
}
else if(curp < p[i].b) {
int mp = seg.Search(1, p[i].b);
curt += 1ll * p[i].b * (mp - p[i].id + 1) - seg.Query_Sum(1, p[i].id, mp);
seg.Modify(1, p[i].id, mp, p[i].b);
}
if(curt > p[i].t) { printf("No\n"); return ; }
}
printf("Yes\n");
}
int main() {
freopen("move.in", "r", stdin);
freopen("move.out", "w", stdout);
int T = Read(); T = Read();
while(T--) Solve();
}