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 

def highestPowerof2(n): 
    p = int(math.log(n, 2))
    return (p,int(pow(2, p))) 

def check(n,e,k):
    while(1):
        n1=int(pow(2, e-1))
        rem=n-n1
        if rem>=k-1:
            return n1
        else:
            e-=1
        
n,k=[int(x) for x in input().split()]
if k>n:
    print("NO")
elif k==n:
    ans=[1]*k
    print("YES")
    print(*ans)
else:
    if k==1:
        if highestPowerof2(n)[1]==n:
            print("YES")
            print(n)
        else:
            print("NO")
    else:     
        #k<n
        ans=[]
        N=n
        while(k>0):
            exp,next=highestPowerof2(n)
            #print(n,k)
            if n-next>=k-1:
                rem=n-next
                ans.append(next)
                if rem==k-1:
                    ans+=[1]*rem
                    break
                k-=1
            else:
                next=check(n,exp,k)
                ans.append(next)
                k-=1
                rem=n-next
            n=rem
        if sum(ans)==N:
            print("YES")
            print(*sorted(ans))
        else:
            print("NO")