import sys # input = lambda :sys.stdin.readline()[:-1] ni = lambda :int(input()) na = lambda :list(map(int,input().split())) yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES") no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO") ####################################################################### n, D = na() # assert n <= 10 a, b, c = zip(*[na() for i in range(n)]) inf = 10 ** 18 dp = [[inf] * (D + 1) for i in range(1 << n)] dp[0][0] = 0 for i in range(1 << n): s = 0 for k in range(n): if i >> k & 1: s += a[k] for j in range(D + 1): for k in range(n): if i >> k & 1: continue nj = max(j, s + a[k]) + b[k] if nj <= D: dp[i | (1 << k)][nj] = min(dp[i | (1 << k)][nj], max(nj, dp[i][j]) + c[k]) # for i in range(1 << n): # print(bin(i), dp[i]) if min(dp[-1]) <= D: Yes() else: No() # from itertools import permutations # ans = 10 ** 18 # for p in permutations(range(n), n): # d = [0] * (n + 1) # x = 0 # for i in range(n): # x += a[p[i]] # d[i+1] = max(d[i], x) + b[p[i]] # e = [0] * (n + 1) # for i in range(n): # e[i+1] = max(e[i], d[i + 1]) + c[p[i]] # ans = min(ans, e[-1]) # if ans <= D: # Yes() # else: # No()