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 random
K = []
k = 0


def isPowerOfTwo(num):
    return num & (num - 1) == 0


def findTwo_sPowers(num):
    _k = list(bin(num).replace("0b", ""))
    K1 = []
    for i in range(0, len(_k)):
        if _k[i] == '1':
            K1.append(pow(2, len(_k) - i - 1))
    return K1


def distributeTwo_sPowers():
    if len(K) > k:
        return False
    elif len(K) == k:
        return list("1" * k)
    else:
        max_n = max(K)
        if max_n == 1:
            return False
        m_k = max(findTwo_sPowers(k - len(K) + 1))

        if max_n >= m_k:
            K[K.index(max_n)] = int(max_n / m_k)
            for i in range(1, m_k):
                K.append(int(max_n / m_k))
        else:
            K[K.index(max_n)] = int(max_n / max_n)
            for i in range(1, max_n):
                K.append(int(max_n / max_n))
        # for j in reversed([2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536]):
        #     if k - len(K) >= j - 1 and max_n >= j-1:
        #         K[K.index(max_n)] = int(max_n / j)
        #         for i in range(1, j):
        #             if int(max_n / j) == 0:
        #                 breakpoint()
        #             K.append(int(max_n / j))
        #         break

        return distributeTwo_sPowers()


if __name__ == '__main__':
    n, k = map(int, input().split())
    # for i in range(1000):
    #     n = random.randint(0, 1000000000)
    #     k = random.randint(0, 200000)
    if k > n:
        print("NO")
    else:
        K = findTwo_sPowers(n)
        if distributeTwo_sPowers():
            print("YES")
            print(" ".join(str(i) for i in K))
            # print(sum(K))
        else:
            print("NO")