def main(): import sys input = sys.stdin.read().split() ptr = 0 n = int(input[ptr]) ptr +=1 A = int(input[ptr]) ptr +=1 B = int(input[ptr]) ptr +=1 X = [] Y = [] K = [] for _ in range(n): x = int(input[ptr]) ptr +=1 y = int(input[ptr]) ptr +=1 k = int(input[ptr]) ptr +=1 X.append(x) Y.append(y) K.append(k) max_len = 1 INF = (1 << n) # Initialize DP: dp[mask][prev1][prev2_idx] dp = [ [ [-1 for _ in range(n+1)] for __ in range(n)] for ___ in range(1<= A or diff_k_prev1_next >= B: cond = True else: # j >=3, need to check prev2 as well # prev2_idx must be valid ( = A) or (diff_k_prev1_next >= B) or (sum_dist >= A): cond = True if cond: new_prev1 = next_ball new_prev2_idx = prev1 # because the new previous is the current prev1 if dp[new_mask][new_prev1][new_prev2_idx] < current_len +1: dp[new_mask][new_prev1][new_prev2_idx] = current_len +1 if current_len +1 > max_len: max_len = current_len +1 queue.append( (new_mask, new_prev1, new_prev2_idx) ) print(max_len) if __name__ == '__main__': main()