def fib_gen(max):
    a, b = 1, 1
    yield 1
    while a < max:
        yield a
        a, b = a + b, a


def zeck_representation(num):
    gen_array = list(fib_gen(num))
    find_num = num
    zeck_array = []
    while find_num > 0:
        zeck_array.append(gen_array[-1])
        find_num -= gen_array[-1]
        for i in range(0, len(gen_array) - 1):
            if gen_array[i] > find_num:
                gen_array = gen_array[:i]
                break
    output = str(num) + ' = '
    zeck_array = ' + '.join(str(i) for i in zeck_array)
    output += zeck_array
    return output

challenge = [4, 100, 30, 5, 120 , 34, 88, 90, 320]
for i in challenge:
    print(zeck_representation(i))        