Problem: A positive integer x is called a power of two if it can be represented as x = 2^y, where y is a non-negative integer. So, the powers of two are 1, 2, 4, 8, 16, ....

You are given two positive integers n and k. Your task is to represent n as the sum of exactly k powers of two.

Input

The only line of the input contains two integers n and k (1 ≤ n ≤ 10^9, 1 ≤ k ≤ 2 ⋅ 10^5).

Output

If it is impossible to represent n as the sum of k powers of two, print NO.

Otherwise, print YES, and then print k positive integers b_1, b_2, ..., b_k such that each of b_i is a power of two, and ∑ _{i = 1}^{k} b_i = n. If there are multiple answers, you may print any of them.

Examples

Input


9 4


Output


YES
1 2 2 4 


Input


8 1


Output


YES
8 


Input


5 1


Output


NO


Input


3 7


Output


NO

Solution (in PYTHON):

Solution:
#####################################   
import atexit, io, sys, collections, math, heapq, fractions, bisect,copy
buffer = io.BytesIO() 
sys.stdout = buffer
@atexit.register 
def write(): sys.__stdout__.write(buffer.getvalue())   
#####################################


def f(n,k):
	if k > n:
		print 'NO'
		return 
	s = bin(n)[2:][::-1]
	r = []
	for i in range(len(s)):
		if s[i] == '1':
			r.append(-2 ** i)
	if len(r) > k:
		print 'NO'
		return
	heapq.heapify(r)
	while(len(r) != k):
		u =heapq.heappop(r)
		u *= -1
		if u != 1:
			heapq.heappush(r, -u/2)
			heapq.heappush(r, -u/2)
	print 'YES'
	print ' '.join(map(str,[-e for  e in r]))


n,k = map(int, raw_input().split())
f(n,k)