#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define vec vector
#define rep(i,n) for (int i=0; i<(n); i++)
#define print(a) cout << a << endl
#define fix(n) fixed << setprecision(n)
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define Yes "Yes"
#define YES "YES"
#define No "No"
#define NO "NO"


int main() {
  ll N,W,S,T,P;
  cin >> N >> W;
  map<ll,ll> m;
  rep(i,N) {
    cin >> S >> T >> P;
    S--;
    T--;
    m[S] += P;
    m[T] -= P;
  }
  ll res = 0, sum = 0;
  for (auto &e: m) {
    sum += e.second;
    res = max(res,sum);
  }
  print(((res>W) ? No : Yes));
  return 0;
}
// Username: WillTheBill
// Time of creation: 2020-10-29 13:25
// Original filename: m.cp.cpp

#include<bits/stdc++.h>
using namespace std;

// shortcuts
#define pb push_back
#define fi first
#define se second
#define all(_v) _v.begin(),_v.end()
#define ll long long

// IO
#define multitest signed __T; cin >> __T; while(__T--)
template<typename T>
void _read(T& t);
template<typename T>
void _read(vector<T>&v);
template<typename T1, typename T2>
void _read(pair<T1,T2>&p);
template<typename T>
void _read(T& t){cin >> t;}
template<typename T>
void _read(vector<T>&v){for(unsigned _i=0;_i<v.size();_i++)_read(v[_i]);}
template<typename T1, typename T2>
void _read(pair<T1,T2>&p){_read(p.first);_read(p.second);}
void _masterread(){}
template<typename T,typename... V>
void _masterread(T& t, V&... v){_read(t);_masterread(v...);}
#define re(...)_masterread(__VA_ARGS__)

template<typename T>
void _print(T t);
template<typename T>
void _print(vector<T>&v);
template<typename T1, typename T2>
void _print(pair<T1,T2>&p);
template<typename T>
void _print(T t){cout<<t;}
template<typename T>
void _print(vector<T>&v){for(unsigned _i=0;_i<v.size();_i++)_print(v[_i]),cout<<(_i==v.size()-1?"":" ");}
template<typename T1, typename T2>
void _print(pair<T1,T2>&p){_print(p.first);cout<<" ";_print(p.second);}
void _masterprint(){cout<<endl;}
template<typename T,typename... V>
void _masterprint(T t, V... v){_print(t);if(sizeof...(v))cout<<" ";_masterprint(v...);}
#define pr(...)_masterprint(__VA_ARGS__)

// DEBUG
// colored output???
template <typename T> // start forward declaration
void _debug(T t);
template<typename T1,typename T2>
void _debug(pair<T1,T2> p);
template<typename T>
void _debug(vector<T>v);
template <typename T> // end forward declaration
void _debug(T t){cerr<<t;}
template<typename T1,typename T2>
void _debug(pair<T1,T2> p){cerr<<"{";_debug(p.first);cerr<<", ";_debug(p.second);cerr<<"}";}
template<typename T>
void _debug(vector<T>v){cerr<<"(";for(unsigned _i=0;_i<v.size();_i++)_debug(v[_i]),cerr<<(_i==v.size()-1?"":", ");cerr << ")";}
void _masterdebug(){cerr<<"]\n";}
template<typename T,typename... V>
void _masterdebug(T t,V... v){_debug(t);if(sizeof...(v))cerr<<", ";_masterdebug(v...);}
#ifdef __local__
#define debug(...) cerr<<"["<<#__VA_ARGS__<<"] = [";_masterdebug(__VA_ARGS__)
#else
#define debug(...) 
#endif

// TYPES
#define int long long
int n;
vector<vector<int>> nodes;
int RES = LLONG_MAX;
map<pair<int, int>, int> mem;

int dist(int ai, int bi){
	auto& a = nodes[ai];
	auto& b = nodes[bi];
	return abs(a[0] - b[0]) + abs(a[1] - b[1]) + max(0ll, b[2] - a[2]);
}

int rec(int idx, int v, int pre){
	if(mem.count({v, pre})) {
		return mem[{v, pre}];
	}
	int res = LLONG_MAX;
	if(idx == n - 1){
		res = dist(pre, 0);
	}else{
		for(int i = 1; i < n; i++){
			if(((v >> i) & 1) == 0){
				v |= (1 << i);
				res = min(dist(pre, i) + rec(idx + 1, v, i), res);
				v &= ~(1 << i);
			}
		}
	}
	mem[{v,pre}] = res;
	return res;
}

signed main(){
    ios_base::sync_with_stdio(false); cin.tie(NULL);
	re(n);	
	nodes = vector<vector<int>> (n, vector<int> (3)); re(nodes);
	pr(rec(0, 0, 0));
}
