#include using namespace std; int main(){ cin.tie(nullptr); ios_base::sync_with_stdio(false); int N, D; cin >> N >> D; vector A(N), B(N), C(N); for (int i = 0; i < N; i++){ cin >> A[i] >> B[i] >> C[i]; } const short inf = 10000; D = min(D, 1500); vector dp(1 << N, vector(N, vector(D, inf))); for (int i = 0; i < N; i++){ dp[1 << i][i][A[i]] = A[i] + B[i]; } for (int i = 0; i < (1 << N); i++){ for (int j = 0; j < N; j++){ for (int k = 0; k < D; k++){ if (dp[i][j][k] != inf){ for (int l = 0; l < N; l++){ if ((i >> l & 1) == 0 and k + max(B[j], A[l]) < D){ dp[i | (1 << l)][l][k + max(B[j], A[l])] = min(dp[i | (1 << l)][l][k + max(B[j], A[l])], max(dp[i][j][k] + C[j], k + max(B[j], A[l]) + B[l])); } } } } } } bool ok = false; for (int i = 0; i < N; i++){ for (int j = 0; j < D; j++){ if (dp[(1 << N) - 1][i][j] + C[i] <= D){ ok = true; } } } if (ok){ cout << "Yes" << endl; } else { cout << "No" << endl; } }