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:
from math import log

def isPwr(x):
  return 2**(len(bin(x))-3)==x

def rec(pwr,l): #Check if possible before call
  if l==1 or l==0:
    return [pwr]
  return rec(pwr-1,l-l/2)+rec(pwr-1,l/2)

n,k=map(int,raw_input().split())
arr=[n]
while not isPwr(arr[-1]):
  num=arr[-1]
  arr[-1]=2**(len(bin(num))-3)
  arr.append(num-arr[-1])
arr=map(lambda x: int(log(x,2)),arr)

if k>sum(map(lambda x: 2**x,arr)) or len(arr)>k:
  print "NO"
else:
  ans=[];k-=len(arr)
  for a in arr:
    if k:
      if (k+1)>=(2**a):
        ans+=[0]*(2**a)
        k-=((2**a)-1)
      else:
        ans+=rec(a,k+1);k=0
    elif not k:
      ans.append(a)
  print "YES\n"," ".join(map(str,map(lambda x: 2**x,ans)))