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 sys

n,k = map(int,sys.stdin.readline().split())

def find(n,k):
    pow = 0
    tmp_two = 1
    two = []
    while tmp_two<=(10**9):
        pow+=1
        two.append(tmp_two)
        tmp_two = 2**pow
    if k>n:
        return 'NO'
    else:
        numbers = {}
        for t in two:
            numbers[t] = 0
        mx_pos=0
        min_nums = 0
        while mx_pos!=-1:
            mx_pos = -1
            while mx_pos<len(two)-1:
                if two[mx_pos+1]<=n:
                    mx_pos+=1
                else:
                    break
            if mx_pos != -1:
                n-=two[mx_pos]
                numbers[two[mx_pos]] += 1
                min_nums += 1
                #numbers.append(two[mx_pos])
        if min_nums>k:
            return 'NO'
        else:
            change = len(two)-1
            while min_nums<k:
                while numbers[two[change]] == 0:
                    change-=1
                numbers[two[change]] -= 1
                numbers[two[change-1]] += 2
                if change<=0:
                    return 'NO'
                min_nums += 1
            ret_nums = []
            #print([]+([10]*0))
            for n in numbers:
                #print(ret_nums,[n]*numbers[n])
                ret_nums = ret_nums + ([n]*numbers[n])
            ret_nums = [str(x) for x in ret_nums]  
            return 'YES\n'+" ".join(ret_nums)
        print(numbers)
            
    print(two)

print(find(n,k))