# https://yukicoder.me/problems/no/3634 MAX_INT = 10 ** 18 def main(): N, D = map(int, input().split()) abc = [] for _ in range(N): a, b, c = map(int, input().split()) abc.append((a, b, c)) a_sum_list = [0 for _ in range(2 ** N)] for bit in range(2 ** N): a_sum = 0 for i in range(N): if bit & (1 << i) > 0: a_sum += abc[i][0] a_sum_list[bit] = a_sum dp = [{} for _ in range(2 ** N)] dp[0][0] = 0 for bit in range(2 ** N): for i in range(N): if bit & (1 << i) > 0: continue new_bit = bit | (1 << i) _, b, c = abc[i] new_a_sum = a_sum_list[new_bit] if new_a_sum <= D: for b_end_day_key, min_c_end_value in dp[bit].items(): new_b_end_day_key = max(b_end_day_key, new_a_sum) + b if new_b_end_day_key <= D: new_min_c_end_value = max(min_c_end_value, new_b_end_day_key) + c if new_b_end_day_key not in dp[new_bit]: dp[new_bit][new_b_end_day_key] = MAX_INT dp[new_bit][new_b_end_day_key] = min(dp[new_bit][new_b_end_day_key] , new_min_c_end_value) for b_end_day_key, min_c_end_value in dp[-1].items(): if min_c_end_value <= D: print("Yes") return print("No") if __name__ == "__main__": main()