Numbers *k*-bonacci (*k* is integer, *k* &gt; 1) are a generalization of Fibonacci numbers and are determined as follows:
 -  *F*(*k*, *n*) = 0, for integer *n*, 1 ≤ *n* &lt; *k*; -  *F*(*k*, *k*) = 1; -  *F*(*k*, *n*) = *F*(*k*, *n* - 1) + *F*(*k*, *n* - 2) + ... + *F*(*k*, *n* - *k*), for integer *n*, *n* &gt; *k*. 
Note that we determine the *k*-bonacci numbers, *F*(*k*, *n*), only for integer values of *n* and *k*.

You've got a number *s*, represent it as a sum of several (at least two) distinct *k*-bonacci numbers.
The first line contains two integers *s* and *k* (1 ≤ *s*, *k* ≤ 10<sup class="upper-index">9</sup>; *k* &gt; 1).
n, k = map(int, input().split(" "))

if k >= 30:
    res = []
    for p in range(0, 30):
        if ((res >> p) & 1) == 1:
            res.append(2 ** p)

    print(len(res))
    print(" ".split(list(map(str,res))))
else:
    fib = [0] * k
    fib.append(1)
    while fib[-1] < 10 ** 9:
        i = len(fib)
        fib.append(sum(fib[i - j] for j in range(1, k + 1)))

    if n in fib:
        print(f"2\n0 {n}")
    else:
        for x in fib:
            for y in fib:
                if x == y: continue

                for z in fib:
                    if z == x or z == y: continue

                    if x + y + z == n:
                        print(f"3\n{x} {y} {z}\n")
                        exit(0)

 	 	  	  		 				 		 						 		 	