n = 521
mask = (1 << n) - 1
expected = bytes.fromhex("01dadc95cc4ad53980f0bfa25eb55bbea8590cc11c12f9922fd3783e0b4ba33846cd11520a0a3fb8b4905c996d")


def next(state):
    state ^= state << (5*21) & mask
    state ^= state >> (52+1)
    state ^= state << (0o521) & mask
    return state


def main():
    flag = input("flag > ").strip().encode()

    if len(flag) != len(expected):
        print("Incorrect...")
        exit(1)

    state = 521
    for i in range((521**521)**521):
        state = next(state)

    for i in range(len(expected)):
        if (flag[i] ^ (state & 0xFF)) != expected[i]:
            print("Incorrect...")
            exit(1)
        state = next(state)

    print("Correct!")


if __name__ == "__main__":
    main()
