import time

def collatz(x):
    seq = [x]
    while x != 1:
        if x % 2 == 0:
            x //= 2
        else:
            x = 3 * x + 1
        seq.append(x)
    return seq

if __name__ == "__main__":
    best = None
    try:
        i = 1
        start = time.time()
        while True:
            pair = (i, collatz(i))

            if (not best or len(pair[1]) > len(best[1])) and not any(c >= 2**31 for c in pair[1]):
                best = pair

            if i % 10000 == 0:
                now = time.time()
                print(f"{i:>10}   best: {best[0]:>10} {len(best[1]):>5} {(now - start) * 1000 / i:5.2}ns/seq")
            i += 1
    except KeyboardInterrupt:
        pass
    
    print(best)
