A, *B = open(0).read().split('\n\n') calls = [int(n) for n in A.split(',')] boards = [[[int(n) for n in ln.split()] for ln in b.splitlines()] for b in B] win_scores = [] for n in calls: pending = [] for board in boards: board[:] = [[None if m == n else m for m in row] for row in board] win_rows = any(all(n is None for n in row) for row in board) win_cols = any(all(n is None for n in col) for col in zip(*board)) if win_cols or win_rows: total = sum(sum(n for n in row if n is not None) for row in board) win_scores.append(total * n) else: pending.append(board) boards = pending print(win_scores[0]) print(win_scores[-1])