Problem: You are given two positive integers n (1 ≤ n ≤ 10^9) and k (1 ≤ k ≤ 100). Represent the number n as the sum of k positive integers of the same parity (have the same remainder when divided by 2).

In other words, find a_1, a_2, …, a_k such that all a_i>0, n = a_1 + a_2 + … + a_k and either all a_i are even or all a_i are odd at the same time.

If such a representation does not exist, then report it.

Input

The first line contains an integer t (1 ≤ t ≤ 1000) — the number of test cases in the input. Next, t test cases are given, one per line.

Each test case is two positive integers n (1 ≤ n ≤ 10^9) and k (1 ≤ k ≤ 100).

Output

For each test case print:

  * YES and the required values a_i, if the answer exists (if there are several answers, print any of them); 
  * NO if the answer does not exist. 



The letters in the words YES and NO can be printed in any case.

Example

Input


8
10 3
100 4
8 7
97 2
8 8
3 10
5 3
1000000000 9


Output


YES
4 2 4
YES
55 5 5 35
NO
NO
YES
1 1 1 1 1 1 1 1
NO
YES
3 1 1
YES
111111110 111111110 111111110 111111110 111111110 111111110 111111110 111111110 111111120

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
long long max(long long a, long long b) {
  if (a > b) return a;
  return b;
}
long long min(long long a, long long b) { return a + b - max(a, b); }
long long mulmod(long long a, long long b, long long mod) {
  return ((a % 998244353) * (b % 998244353) % 998244353);
}
long long mod(long long a, long long b) {
  if (a > b)
    return a - b;
  else
    return b - a;
}
long long power(long long x, long long y, long long p) {
  long long res = 1;
  x = x % p;
  while (y > 0) {
    if (y & 1) res = (res * x) % p;
    y = y >> 1;
    x = (x * x) % p;
  }
  return res;
}
template <class T>
istream &operator>>(istream &is, vector<T> &v) {
  for (T &a : v) is >> a;
  return is;
}
int bits(long long n) {
  long long ctr = 0;
  while (n) {
    n /= 10;
    ctr++;
  }
  return ctr;
}
vector<long long> z_function(string second) {
  long long n = (long long)second.length();
  vector<long long> z(n);
  for (long long i = 1, l = 0, r = 0; i < n; ++i) {
    if (i <= r) z[i] = min(r - i + 1, z[i - l]);
    while (i + z[i] < n && second[z[i]] == second[i + z[i]]) ++z[i];
    if (i + z[i] - 1 > r) l = i, r = i + z[i] - 1;
  }
  return z;
}
vector<long long> bits1(long long n) {
  vector<long long> res;
  while (n) {
    res.push_back(n % 10);
    n /= 10;
  }
  reverse(res.begin(), res.end());
  return res;
}
long long modInv(long long x) { return power(x, 998244353 - 2, 998244353); }
long long fact[200005];
long long ncr(long long n, long long r) {
  long long x = fact[n];
  long long y = fact[n - r];
  long long z = fact[r];
  long long ff = (y * z) % 998244353;
  long long gg1 = modInv(ff);
  return (gg1 * x) % 998244353;
}
long long logs(long long x) {
  long long tot = 0;
  long long n = x;
  while (x > 0) {
    x /= 2;
    tot++;
  }
  return tot;
}
long long case_no = 1;
void op() {
  cout << "Case #" << case_no << ": ";
  case_no++;
}
long long first(long long a, long long b, long long c) {
  return (a - b) * (a - b) + (b - c) * (b - c) + (c - a) * (c - a);
}
long long gg(long long x) {
  long long ctr = 0;
  while (x > 1) {
    x /= 2;
    ctr++;
  }
  return ctr;
}
bool search(long long x, long long y, set<long long> s1) {
  auto it = s1.lower_bound(x);
  if (it == s1.end()) return false;
  long long g = *it;
  if (g >= x && g <= y) return true;
  return false;
}
void solve() {
  long long n, k;
  cin >> n >> k;
  if (n < k) {
    cout << "NO\n";
    return;
  }
  if (n % 2 && k % 2 == 0) {
    cout << "NO\n";
    return;
  }
  if (n % 2) {
    cout << "YES\n";
    long long tot = 0;
    for (long long i = 0; i < k - 1; i++) cout << 1 << " ";
    cout << n + 1 - k << "\n";
    return;
  } else {
    if (k % 2) {
      if (n < 2 * k) {
        cout << "NO\n";
        return;
      }
      cout << "YES\n";
      for (long long i = 0; i < k - 1; i++) cout << 2 << " ";
      cout << n - 2 * (k - 1) << "\n";
    } else {
      cout << "YES\n";
      long long tot = 0;
      for (long long i = 0; i < k - 1; i++) cout << 1 << " ";
      cout << n + 1 - k << "\n";
      return;
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  ;
  long long t;
  cin >> t;
  while (t--) {
    solve();
  }
}