Nastia has 2 positive integers A and B. She defines that:

  * The integer is good if it is divisible by A ⋅ B; 
  * Otherwise, the integer is nearly good, if it is divisible by A. 



For example, if A = 6 and B = 4, the integers 24 and 72 are good, the integers 6, 660 and 12 are nearly good, the integers 16, 7 are neither good nor nearly good.

Find 3 different positive integers x, y, and z such that exactly one of them is good and the other 2 are nearly good, and x + y = z.

Input

The first line contains a single integer t (1 ≤ t ≤ 10 000) — the number of test cases.

The first line of each test case contains two integers A and B (1 ≤ A ≤ 10^6, 1 ≤ B ≤ 10^6) — numbers that Nastia has.

Output

For each test case print: 

  * "YES" and 3 different positive integers x, y, and z (1 ≤ x, y, z ≤ 10^{18}) such that exactly one of them is good and the other 2 are nearly good, and x + y = z. 
  * "NO" if no answer exists. 

You can print each character of "YES" or "NO" in any case.

If there are multiple answers, print any.

Example

Input


3
5 3
13 2
7 11


Output


YES
10 50 60
YES
169 39 208
YES
28 154 182

Note

In the first test case: 60 — good number; 10 and 50 — nearly good numbers.

In the second test case: 208 — good number; 169 and 39 — nearly good numbers.

In the third test case: 154 — good number; 28 and 182 — nearly good numbers.
#include<bits/stdc++.h>
#include<vector>
#include<map>
#include<unordered_set>
#include<set>
using namespace std;
#define flush
#define pb push_back
#define ed endl
#define cout1(a) cout<<a
#define cout2(a,b) cout<<a<<b
#define doub(x); cout<<fixed<<setprecision(20)<<x;
#define cout3(a,b,c) cout<<a<<b<<c
#define ll long long
#define ld long double
#define db double
#define ull unsigned long long
#define mk make_pair
#define pll pair<ll,ll>
#define pldb pair<ldb,ldb>
#define ff first
#define ss second
#define vull vector<ull>
#define ub upper_bound
#define lb lower_bound
#define sorts(v) sort(v.begin(),v.end())
#define sortg(v) sort(v.begin(),v.end(),greater<ll>())
#define vll vector<ll>//vll v; means vector<long long>v;
#define vb vector<bool>
#define vldb vector<ldb>
#define vpll vector<pll>
#define vpldb vector<pldb>
#define pqmin priority_qrueue<ll,vector<ll>,greater<ll>>  //minheap
#define pq priority_qrueue<ll> //maxheap
#define pqrpll priority_qrueue<pll>//pqr with pairs
#define mll map<long,long>
#define mldb map<ldb,ldb>
#define umll unordered_map<ll>
#define sll set<ll>
#define usll unordered_set<ll>
#define ppc(x) __builtin_popcount(x)
#define pp(x) __builtin_parity(x)
#define ppll(x) __builtin_parityll(x)
#define clz(x) __builtin_clz(x)
#define ctz(x) __builtin_ctz(x)
#define clzll(x) __builtin_clzll(x)
#define ctzll(x) __builtin_ctzll(x)
#define ppcll(x) __builtin_popcountll(x)
#define maxx 1e9+7
#define minn -(1e9+7)
ll mod=1000000000+7;
ll inf=1e17;
 //memset(dp, -1, sizeof dp);
//1<log(n)<sqrrt(n)<n<nlog(n)<n^2<n^3<........<2^n<3^n.....<n^n
/* n<=22    O((2^n)*n)                                           //__gcd(a,b) gives gcd of two numbers
n<=100   O(n^4)
n<=400  O(n^3)                                                //no of digits=floor(log10(n))+1;
n<=2000  O(n^2logn)
n<=10^4   O(n^2)                                              return(x&&(!(x&(x-)))); tell if x is power of 2;
n<=10^5or6 O(nlogn)                                           accumulate(v.begin(),v.end(),0);
n<=10^8    O(n),O(3.2*log(10)n),O(1)
n<=10^18   O(logn),O(1)


vector<int>::iterator it;
__lg(10)=3   to know
log(i)=log(i/2) + 1 recurrance relation to calculate the log value
log(10)=2.3059*log10(10)
log10(10)=1
cout<<setw(2)<<setfill('0')<<h<<':'<<setw(2)<<setfill('0')<<m<<ed;  set the feild width to 2 and default value is 0
*/
/*
NOTE-pow() funtion is not so precise






*/
const int N=1e5+5;
bool prime[N];


void solve()
{
ll a,b;
cin>>a>>b;
ll lcm=(1ll*a*(b));
ll z=lcm+a;
ll x=a;
ll y=lcm;
if(b==1)
{
    cout<<"NO"<<ed;
}
else
{
cout<<"YES"<<ed;
cout<<x<<" "<<y<<" "<<z<<ed;
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
// prime[1]=false;
// for(int i=0;i*i<=N;i++)
// {
//  for(int j=i*i;j<=N;j+=i)
//  {
//     prime[j]=true
//  }
// }
ll t;
cin>>t;
while(t--)
{
solve();
}
return(0);
}