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:
from math import log2
from queue import Queue
import sys
n, k = map(int, input().split(' '))


def find_pows(x):
    ps = []
    i = 1
    while i <= x:
        if i & x:
            ps.append(i)
        i <<= 1
    return ps


res = find_pows(n)
res = sorted(res)
dp_look = {}

if len(res) > k:
    print('NO')

elif len(res) == k:
    print('YES')
    res = map(str, res)
    print(' '.join(res))

else:
    # print(f'debug: {res}')
    k -= len(res)
    ans_set = [i for i in res]
    ans_set = sorted(ans_set, reverse=True)
    final_ans = []
    q = Queue()
    for num in ans_set:
        q.put(num)
    while k > 0 and  q.empty() == False:
        tmp = q.get()
        # print(f'got: {tmp}')
        if tmp == 1:
            final_ans.append(1)
        else:
            tmp //= 2
            k += 1
            q.put(tmp)
            q.put(tmp)
            k -= 2

    # print(f'val of k now: {k}')

    if k > 0:
        sys.stdout.write('NO\n')
    else:
        sys.stdout.write('YES\n')
        while q.empty() == False:
            sys.stdout.write(str(q.get()) + ' ')

        final_ans = map(str, final_ans)
        sys.stdout.write(' '.join((final_ans)) + '\n')