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 PYTHON3):

Solution:
import math
lst = []
n,k = map(int,input().split())
if k>n :
    print("NO")
elif n==k:
    print("YES")
    for i in range(k):
        print(1,end = ' ')
else:
    count =0
    c = 0
    while n>=1:
       c =int(math.log2(n))
       n-=2**c
       count+=1
       lst.append(2**c)
    if count >k:
        print("NO")
    elif count == k:
        print("YES")
        for i in range(len(lst)):
            print(lst[-i-1],end=" ")
    else:
        if k - count <100:    
            while count <k:
                count+=1
                max1=max(lst)
                inx = lst.index(max1)
                del lst[inx]
                max1=int(max1/2)
                lst.append(max1)
                lst.append(max1)
            lst.sort()
            print("YES")
            print(*lst, sep=' ')
            
        else:
            x=k-count+1
            cc= False
            kk =0
            
            while k>len(lst):
                cc= True
                for i in range(int(math.log2(lst[kk]))):
                    if k<=len(lst):
                        break
                    if int(lst[kk]/(2**i))<=x :
                        cc = False
                        for j in range(int(lst[kk]/(2**i))):
                            lst.append(2**i)
                        x=x-(int(lst[kk]/(2**i))-1)
                        del lst[kk]
                        break
                if max(lst)==2:
                    break
                if cc:
                    kk+=1
                    if len(lst)<=kk:
                        kk=0
            if k>len(lst):
                lst=sorted(lst,reverse=True)
                for i in range(x-1):
                        del lst[0]
                        lst.append(1)
                        lst.append(1)
            lst.sort()
            cgl =0
            print("YES")
            for i in lst:
                print(i,end=' ')