def game(start, n): d = dict() for i, x in enumerate(start[:-1]): d[x] = i last = start[-1] for i in range(len(start), n): if last in d: j = d[last] d[last] = i - 1 last = i - 1 - j else: d[last] = i - 1 last = 0 return last print(game([11, 18, 0, 20, 1, 7, 16], 2020)) print(game([11, 18, 0, 20, 1, 7, 16], 30000000))