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).

def bin_search(m,a):
	l = 0
	h = len(a)-1
	
	while(l<=h):
		mid = (h+l)//2
		if(a[mid] == m):
			return a[mid]
		elif(a[mid] < m):
			l = mid + 1
		else:
			h = mid - 1
	return a[l-1]
	





s = input().split()
(m,k) = (int(i) for i in s)

if(k<=32):
	a = [0 for i in range(k-1)]
	a.append(1)
	i = 0

	while(a[-1] <= m):
		a.append(sum(a[i:i+k]))
		i += 1
	res = []
	res.append(a[-2])
	m -= a[-2]

	while(m>0):
		if(m in a):
			res.append(m)
			m = 0
		else:
			#print(m,a)
			k = bin_search(m,a)
			#print(k,end = ' ')
			if(k == 0):
				break
			res.append(k)
			m -= k
	res.append(0)
	res = res[::-1]
	for i in range(len(res)):
		print(res[i], end = ' ')
else:
	s = bin(m)
	#print(s)
	s = s[::-1]
	res = []
	for i in range(len(s)-2):
		if(s[i] == '1'):
			print(1<<i, end = ' ')
	print(0)



