expense_report = [] with open('day1/input') as reader: expense_report.extend([int(l) for l in reader.readlines()]) expense_report.sort() def calc_two(sub_set, absolute): first_i = 0 second_i = len(sub_set) - 1 first = sub_set[first_i] second = sub_set[second_i] while first_i < second_i and first + second + absolute != 2020: if first + second + absolute > 2020: second_i -= 1 second = sub_set[second_i] else: first_i += 1 first = sub_set[first_i] if first_i < second_i: return (first, second) return None for i in range(len(expense_report) - 1): res = calc_two(expense_report[i+1:], expense_report[i]) if res is not None: print(res[0], res[1], expense_report[i]) print(res[0] * res[1] * expense_report[i]) break