from collections import deque
from itertools import islice, count
 
 
def fusc():
    q = deque([1])
    yield 0
    yield 1
 
    while True:
        x = q.popleft()
        q.append(x)
        yield x
 
        x += q[0]
        q.append(x)
        yield x
 
 
def longest_fusc():
    sofar = 0
    for i, f in zip(count(), fusc()):
        if f >= sofar:
            yield(i, f)
            sofar = 10 * sofar or 10
 
 
print('First 61:')
print(list(islice(fusc(), 61)))
 
print('\nLength records:')
for i, f in islice(longest_fusc(), 6):
    print(f'fusc({i}) = {f}')
 