#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int Mod=998244353;
const ll INF = -10000000000000;
void solve() {
ll n,k;
cin >> n >> k;
string s;
cin >> s;
bool ok = false;
for(int i=0;i<n && !ok;i++) if(s[i]=='0') ok = true;
if(!ok){
vector<ll> a(n);
for(int i=0;i<n;i++) cin >> a[i];
vector<ll> best(n);
best[0]=a[0];
ll res=best[0];
for(int i=1;i<n;i++){
best[i]=max(best[i-1]+a[i],a[i]);
res=max(res,best[i]);
}
if(res==k){
cout << "YES\n";
for(int i=0;i<n;i++) cout << a[i] << " ";
cout << '\n';
return;
}
cout << "NO\n";
return;
}
vector<ll> a(n);
for(int i=0;i<n;i++) {
cin >> a[i];
if(s[i]=='0') a[i]=INF;}
vector<ll> best(n);
best[0]=a[0];
ll res=best[0];
for(int i=1;i<n;i++){
best[i]=max(best[i-1]+a[i],a[i]);
res=max(res,best[i]);
}
if(res>k){
cout << "NO\n";
return;
}
cout << "YES\n";
int pos = 0 ;
for(pos=0;pos<n && s[pos]!='0';pos++);
ll n1 =0 , n2=0;
for(int i=0;i<pos;i++){
n2=max(n1+a[i],a[i]);
n1=n2;
}
n1=max(n1,0LL);
ll post = 0,prefix=0;
for(int i=pos+1;i<n;i++){
prefix+=a[i];
post=max(prefix,post);
}
ll put = k-n1-post;
a[pos]=put;
for(int i=0;i<n;i++) cout << a[i] << " ";
cout << '\n';
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpjb25zdCBpbnQgTW9kPTk5ODI0NDM1MzsKY29uc3QgbGwgSU5GID0gLTEwMDAwMDAwMDAwMDAwOwoKdm9pZCBzb2x2ZSgpIHsKICAgbGwgbixrOwogICBjaW4gPj4gbiA+PiBrOwogICBzdHJpbmcgczsKICAgY2luID4+IHM7CiAgIGJvb2wgb2sgPSBmYWxzZTsKICAgZm9yKGludCBpPTA7aTxuICYmICFvaztpKyspIGlmKHNbaV09PScwJykgb2sgPSB0cnVlOyAgICAKICAgaWYoIW9rKXsKICAgdmVjdG9yPGxsPiBhKG4pOwogICBmb3IoaW50IGk9MDtpPG47aSsrKSBjaW4gPj4gYVtpXTsKICAgdmVjdG9yPGxsPiBiZXN0KG4pOwogICBiZXN0WzBdPWFbMF07CiAgIGxsIHJlcz1iZXN0WzBdOwogICBmb3IoaW50IGk9MTtpPG47aSsrKXsKICAgIGJlc3RbaV09bWF4KGJlc3RbaS0xXSthW2ldLGFbaV0pOwogICAgcmVzPW1heChyZXMsYmVzdFtpXSk7CiAgIH0gCiAgIGlmKHJlcz09ayl7CiAgICBjb3V0IDw8ICJZRVNcbiI7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKSBjb3V0IDw8IGFbaV0gPDwgIiAiOwogICAgY291dCA8PCAnXG4nOwogICAgcmV0dXJuOwogICB9CiAgIGNvdXQgPDwgIk5PXG4iOwogICByZXR1cm47CiAgIH0gCiAgIHZlY3RvcjxsbD4gYShuKTsKICAgZm9yKGludCBpPTA7aTxuO2krKykgewogICAgY2luID4+IGFbaV07CiAgICBpZihzW2ldPT0nMCcpIGFbaV09SU5GO30KICAgdmVjdG9yPGxsPiBiZXN0KG4pOwogICBiZXN0WzBdPWFbMF07CiAgIGxsIHJlcz1iZXN0WzBdOwogICBmb3IoaW50IGk9MTtpPG47aSsrKXsKICAgIGJlc3RbaV09bWF4KGJlc3RbaS0xXSthW2ldLGFbaV0pOwogICAgcmVzPW1heChyZXMsYmVzdFtpXSk7CiAgIH0gCiAgIGlmKHJlcz5rKXsKICAgIGNvdXQgPDwgIk5PXG4iOwogICAgcmV0dXJuOwogICB9CiAgIGNvdXQgPDwgIllFU1xuIjsKICAgaW50IHBvcyA9IDAgOwogICBmb3IocG9zPTA7cG9zPG4gJiYgc1twb3NdIT0nMCc7cG9zKyspOyAKICAgIGxsIG4xID0wICwgbjI9MDsKICAgZm9yKGludCBpPTA7aTxwb3M7aSsrKXsKICAgIG4yPW1heChuMSthW2ldLGFbaV0pOwogICAgbjE9bjI7CiAgIH0KICAgbjE9bWF4KG4xLDBMTCk7CiAgIGxsIHBvc3QgPSAwLHByZWZpeD0wOwogICBmb3IoaW50IGk9cG9zKzE7aTxuO2krKyl7CiAgICBwcmVmaXgrPWFbaV07CiAgICBwb3N0PW1heChwcmVmaXgscG9zdCk7CiAgIH0KICAgbGwgcHV0ID0gay1uMS1wb3N0OwogICBhW3Bvc109cHV0OwogICBmb3IoaW50IGk9MDtpPG47aSsrKSBjb3V0IDw8IGFbaV0gPDwgIiAiOwogICBjb3V0IDw8ICdcbic7Cn0KCmludCBtYWluKCl7IAogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKCQogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHNvbHZlKCk7CiAgICAKCiAgICByZXR1cm4gMDsKfQo=
MTAKMyA1CjAxMQowIDAgMQo1IDYKMTEwMTEKNCAtMyAwIC0yIDEKNCA0CjAwMTEKMCAwIC00IC01CjYgMTIKMTEwMTExCjEgMiAwIDUgLTEgOQo1IDE5CjAwMDAwCjAgMCAwIDAgMAo1IDE5CjExMDAxCi04IDYgMCAwIC01CjUgMTAKMTAxMDEKMTAgMCAxMCAwIDEwCjEgMQoxCjAKMyA1CjExMQozIC0xIDMKNCA1CjEwMTEKLTIgMCAxIC01Cg==
10
3 5
011
0 0 1
5 6
11011
4 -3 0 -2 1
4 4
0011
0 0 -4 -5
6 12
110111
1 2 0 5 -1 9
5 19
00000
0 0 0 0 0
5 19
11001
-8 6 0 0 -5
5 10
10101
10 0 10 0 10
1 1
1
0
3 5
111
3 -1 3
4 5
1011
-2 0 1 -5