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:
while True:
    try:
        def soln(n, k):
            res = {}
            queue = []
            for i in range(44):
                if n & (1 << i):
                    if i > 0:
                        queue.append(1<<i)
                    res[1<<i] = 1
            if len(res)>k:
                print("NO")
                return
            cnt = len(res)
            i = 0
            while cnt < k and i < len(queue):
                v = queue[i]
                i += 1
                res[v] -= 1
                if res.get(v//2) != None:
                    res[v//2]+= 2
                else:res[v//2]= 2 
                if v//2 > 1:
                    queue.append(v//2);queue.append(v//2)
                cnt += 1
            if cnt < k:
                print("NO")
                return 
            print("YES")
            finl_res = []
            for x in res:
                for j in range(res[x]):
                    finl_res.append(x)
            print(*finl_res)





        '''
        def soln(n, k):
            if k == 1:
                for i in range(0, 42, 1):
                    if 1 << i == n:
                        print("YES")
                        print(n)
                        return
                    elif (1 << i) > n:
                        print("NO")
                        return
            else:
                res = [1]*(k)
                sum = k
            
                if n & 1:
                    j = 1
                else:j = 0
                for i in range(1, 40, 1):
                    v = 1 << i
                    for l in range(j, k, 1):
                        if sum == n:
                            print("YES")
                            print(*res)
                            return
                        sum += v - (1 << (i-1))
                        res[l]= v
                        if sum > n:
                            print("NO")
                            return
                        '''


        def read():
            n, k = map(int, input().split())
            soln(n, k)
        if __name__ == "__main__":
            read()
    except EOFError:
        break