#include<bits/stdc++.h>
#define rep(i, s, t) for(int i = (s); i <= (t); i ++)
#define per(i, s, t) for(int i = (s); i >= (t); i --)
#define fio(x) freopen(#x".in", "r", stdin); freopen(#x".out", "w", stdout);
using namespace std;
typedef long long ll;
const int N = 2e5 + 5;
ll a[N], b[N];
int n, m;
ll t[N];
struct BIT {
int a[N];
void upd(int q, int v)
{
q ++;
for(int i = q; i < N; i += (i & -i)) a[i] = max(a[i], v);
}
int qry(int q)
{
q ++;
int ans = 0;
for(int i = q; i; i -= (i & -i)) ans = max(ans, a[i]);
return ans;
}
void init()
{
memset(a, 0, sizeof a);
}
} bit;
struct BIT2 {
ll a[N];
void upd(int q, ll v)
{
q ++;
for(int i = q; i < N; i += (i & -i)) a[i] += v;
}
ll qry(int q)
{
q ++;
ll ans = 0;
for(int i = q; i; i -= (i & -i)) ans += a[i];
return ans;
}
void init()
{
memset(a, 0, sizeof a);
}
ll qry(int ql, int qr) { return qry(qr) - qry(ql - 1); }
} ok, bit2;
ll S(ll x) { return x * (x + 1) / 2; }
multiset<pair<ll, ll>> usew;
int lower_bound_by(vector<int>& v, ll *arr, int vv)
{
int l = 0, r = v.size();
while(l < r)
{
int mid = l + r >> 1;
if(arr[v[mid]] < vv) l = mid + 1;
else r = mid;
}
return r;
}
bool solveR(vector<int> id)
{
if(id.empty()) return 1;
auto id0 = id;
sort(id.begin(), id.end(), [](int x, int y) { return t[x] < t[y]; });
bit.init();
ok.init();
bit2.init();
rep(i, 0, id0.size() - 1)
bit2.upd(i, a[id0[i]]);
ll used = 0;
for(int i : id)
{
ll now = lower_bound_by(id0, b, b[i]);
ll fr = bit.qry(now);
ll pos = lower_bound_by(id0, b, fr);
fr += now - pos;
fr = max(fr, a[i]);
ll w = b[i] - fr;
ll l0;
{
int l = now, r = id0.size() - 1;
while(l < r)
{
int mid = l + r + 1 >> 1;
if(!ok.qry(now, mid) && a[id0[mid]] <= fr + mid - now) l = mid;
else r = mid - 1;
}
l0 = l - now;
}
int r0;
{
int l = now, r = id0.size() - 1;
while(l < r)
{
int mid = l + r + 1 >> 1;
if(!ok.qry(now, mid) && a[id0[mid]] <= b[i] + mid - now) l = mid;
else r = mid - 1;
}
r0 = l - now;
}
ll ncnt = r0 - l0;
w += l0 * (b[i] - fr) + (ncnt) * b[i] + S(l0 + ncnt) - S(l0) - bit2.qry(now + l0 + 1, now + r0);
used += w;
usew.insert({t[i], w});
if(used > t[i]) return 0;
ok.upd(now, 1);
bit.upd(now, b[i]);
bit2.upd(now, -a[i]);
}
return 1;
}
struct fastio {
static const int maxn = 1 << 16;
char buf[maxn], *S = buf, *T = buf;
char gc() { return (S == T ? T = (S = buf) + fread(buf, 1, maxn, stdin) : 0), (S == T ? EOF : *S ++); }
template<typename T>
void read(T& x)
{
x = 0; int f = 0; char c = gc();
while(!isdigit(c)) f = c == '-', c = gc();
while(isdigit(c)) x = x * 10 + c - '0', c = gc();
if(f) x = -x;
}
template<typename T>
fastio& operator>>(T& x) { read(x); return *this; }
} fin;
const int V = 1e9 + 5;
void solve()
{
fin >> n;
usew.clear();
rep(i, 1, n) fin >> a[i] >> b[i] >> t[i];
vector<int> l, r;
rep(i, 1, n)
{
if(a[i] == b[i]) continue;
if(a[i] > b[i]) l.push_back(i);
else r.push_back(i);
}
if(!solveR(r)) return cout << "No\n", void();
for(int i : l) a[i] = V - a[i], b[i] = V - b[i];
for(int &i : l) i = n - i + 1;
reverse(a + 1, a + n + 1);
reverse(b + 1, b + n + 1);
reverse(t + 1, t + n + 1);
reverse(l.begin(), l.end());
if(!solveR(l)) return cout << "No\n", void();
ll used = 0;
for(auto [lim, w] : usew)
{
used += w;
if(used > lim)
return cout << "No\n", void();
}
cout << "Yes\n";
}
signed main()
{
fio(move);
ios::sync_with_stdio(0);cin.tie(0);
int _, t; fin >> _ >> t; while(t --) solve();
return 0;
}