#include <bits/stdc++.h>
using namespace std;
int main() {
// your code goes here
int t;cin >> t;
while(t--)
{
int n,p;cin >> n >> p;
//cout << n << " " << p << endl;
int arr[n];
vector< pair <int,int> > v,v1,v2;
for(int i = 0;i<n;i++){
cin >> arr[i] ;
// cout << arr[i] << endl;
if(arr[i] != 1 && p%arr[i] == 0)
{
// cout << " uu" << endl;
v.push_back(make_pair(arr[i],i));
// cout << v[0].first << endl;
}
else if(arr[i] != 1 && p%arr[i] != 0){
v1.push_back(make_pair(arr[i],i));
//v2.push_back(arr[i]);
}
}
// cout << "JJ" << endl;
// cout << "dD" << v[0].first << endl;
sort(v.begin(),v.end());
// cout << v[0].first << endl;
vector<int> q(n,0);
//cout << " V size " << v.size() << endl;
//cout << v1[0].second << " v1[0]" << endl;
bool t = false;
if(v1.size() >= 1)
{
t = true;
cout << "YES ";
if(v1[0].first != 0)
q[v1[0].second] = p/v1[0].first + 1;
//for(int i = 0;i<q.size();i++){
// cout << q[i] << " ";
//}
}
else if(v.size() >=2 )
{
int cp = 0;
int i = 0;
for(i = 1;i<v.size();i++){
// cout << v[i].first << endl;
if(v[i-1].first != 0)
if(v[i].first % v[i-1].first != 0){
cp++;
break;
}
}
// int x = (p/v[i-1].first) - 1;
//int y = v[i-1].first*x + v[i].first;
q[v[i].second] = (p/v[i].first) - 1;
//cout << q[v[i].second] << endl;
int x = p - q[v[i].second]*v[i].first;
// cout << "x is " << x << endl;
q[v[i-1].second] = x/v[i-1].first + 1;
// cout <<"ZZ" << endl;
if(cp == 0)
{cout << "NO" << endl;
}
else{
t = true;
cout << "YES " ;
// for(int i = 0;i<q.size();i++){
// cout << q[i] << " ";
// }
// cout << endl;
}
}
else{
//if(v.size() == 1)
cout << "NO" << endl;
}
if(t){
for(int i = 0;i<q.size();i++){
cout << q[i] << " ";
}
cout << endl;
}
}
return 0;
}