/**
* author: longvu
* created: 03/10/22 12:24:27
**/
#include<bits/stdc++.h>
using namespace std;
#define sz(x) ((int)x.size())
#define all(x) (x).begin(), (x).end()
const int INF = numeric_limits<int>::max();
const int nax = (int)(3001);
const int mod = 1e9 + 7;
template<class X, class Y>
bool maximize(X& x, const Y y) {
if (y > x) {x = y; return true;}
return false;
}
template<class X, class Y>
bool minimize(X& x, const Y y) {
if (y < x) {x = y; return true;}
return false;
}
const int base = 1001;
#define IDX(x) (x + base)
int a[nax], tr[nax], ans[nax];
int32_t main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
int n, q;
cin >> n >> q;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
}
bitset<nax> dp;
deque<int> dq = {0};
while (!dq.empty()) {
int u = dq.front();
dq.pop_front();
for (int i = 1; i <= n; ++i) {
int need = a[i] - q;
if (u + need > -base
&& u + need < base
&& !dp[IDX(u + need)]) {
dp[IDX(u + need)] = 1;
tr[IDX(u + need)] = i;
dq.push_back(u + need);
}
}
}
if (!dp[IDX(0)]) {
cout << "NO" << '\n';
return 0;
}
cout << "YES" << '\n';
int v = 0;
do {
ans[tr[IDX(v)]]++;
v -= a[tr[IDX(v)]] - q;
} while (v);
for (int i = 1; i <= n; ++i) {
cout << ans[i] << " ";
}
cout << '\n';
return 0;
}
LyoqCgogKiAgICBhdXRob3I6ICBsb25ndnUKICogICAgY3JlYXRlZDogMDMvMTAvMjIgMTI6MjQ6MjcKKiovCiNpbmNsdWRlPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBzeih4KSAoKGludCl4LnNpemUoKSkKI2RlZmluZSBhbGwoeCkgKHgpLmJlZ2luKCksICh4KS5lbmQoKQpjb25zdCBpbnQgSU5GID0gbnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CmNvbnN0IGludCBuYXggPSAoaW50KSgzMDAxKTsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7Cgp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZPgpib29sIG1heGltaXplKFgmIHgsIGNvbnN0IFkgeSkgewogICAgaWYgKHkgPiB4KSB7eCA9IHk7IHJldHVybiB0cnVlO30KICAgIHJldHVybiBmYWxzZTsKfQp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZPgpib29sIG1pbmltaXplKFgmIHgsIGNvbnN0IFkgeSkgewogICAgaWYgKHkgPCB4KSB7eCA9IHk7IHJldHVybiB0cnVlO30KICAgIHJldHVybiBmYWxzZTsKfQoKY29uc3QgaW50IGJhc2UgPSAxMDAxOwojZGVmaW5lIElEWCh4KSAoeCArIGJhc2UpCgppbnQgYVtuYXhdLCB0cltuYXhdLCBhbnNbbmF4XTsKaW50MzJfdCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKDApOwogICAgaW50IG4sIHE7CiAgICBjaW4gPj4gbiA+PiBxOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgY2luID4+IGFbaV07CiAgICB9CiAgICBiaXRzZXQ8bmF4PiBkcDsKICAgIGRlcXVlPGludD4gZHEgPSB7MH07CiAgICB3aGlsZSAoIWRxLmVtcHR5KCkpIHsKICAgICAgICBpbnQgdSA9IGRxLmZyb250KCk7CiAgICAgICAgZHEucG9wX2Zyb250KCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgICAgIGludCBuZWVkID0gYVtpXSAtIHE7CiAgICAgICAgICAgIGlmICh1ICsgbmVlZCA+IC1iYXNlIAogICAgICAgICAgICAgICAgJiYgdSArIG5lZWQgPCBiYXNlCiAgICAgICAgICAgICAgICAmJiAhZHBbSURYKHUgKyBuZWVkKV0pIHsKICAgICAgICAgICAgICAgIGRwW0lEWCh1ICsgbmVlZCldID0gMTsKICAgICAgICAgICAgICAgIHRyW0lEWCh1ICsgbmVlZCldID0gaTsKICAgICAgICAgICAgICAgIGRxLnB1c2hfYmFjayh1ICsgbmVlZCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoIWRwW0lEWCgwKV0pIHsKICAgICAgICBjb3V0IDw8ICJOTyIgPDwgJ1xuJzsKICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIGNvdXQgPDwgIllFUyIgPDwgJ1xuJzsKICAgIGludCB2ID0gMDsKICAgIGRvIHsKICAgICAgICBhbnNbdHJbSURYKHYpXV0rKzsKICAgICAgICB2IC09IGFbdHJbSURYKHYpXV0gLSBxOwogICAgfSB3aGlsZSAodik7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyArK2kpIHsKICAgICAgICBjb3V0IDw8IGFuc1tpXSA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8ICdcbic7CiAgICByZXR1cm4gMDsKfQo=