#include <iostream>
#include <stdint.h>
#include <unordered_map>
#include <unordered_set>
#include <vector>

using namespace std;

void drugi_resi_prvi_primer(const vector<int32_t>& a, uint32_t n, int32_t k) {
    uint32_t n_i;
    uint32_t pozitivno;
    uint32_t abs_a_0, resenje;
    pozitivno = (a[0] >= 0)?1:0;
    abs_a_0 = (a[0] > 0)? a[0] : a[0]*(-1);
    // cout << "pozitivno: " << pozitivno << '\n';
    if(abs_a_0 > n) // onda je rezultat +/- n
        if((pozitivno && (k == n)) || (!pozitivno && k == -n)) {
            cout << "DA\n";
            for(n_i = 0; n_i < n; ++n_i) {
                cout << a[n_i] << ' ';
            }
        } else {
            cout << "NE";
        }
    else {// abs_a_0 <= n
        resenje = abs_a_0 + (abs_a_0 - n)%2;
        if((pozitivno && (k == resenje)) || (!pozitivno && (k == -resenje))) {
            cout << "DA\n";
            for(n_i = 0; n_i < n; ++n_i) {
                cout << a[n_i] << ' ';
            }
        } else
            cout << "NE";
    }
}

void drugi() {
    // prva linija DA/NE
    // druga linija redosled ako je t == 1
    bool t;
    bool prvi_primer;
    uint16_t t_input;
    cin >> t_input;
    t = (t_input==1)?true:false;

    uint32_t n, n_i; // 1 <= n <= 200000
    int32_t k; // -200000 <= -n <= k <= n <= 200000
    cin >> n;
    cin >> k;

    vector<int32_t> a; // isto kao k, vrednost ljudi
    a.resize(n);
    for(n_i = 0; n_i < n; ++n_i)
        cin >> a[n_i];

    prvi_primer = true;
    for(n_i = 1; n_i < n; ++n_i)
        if(a[n_i] != a[n_i-1]) {
            prvi_primer = false;
            break;
        }
    if(prvi_primer)
        drugi_resi_prvi_primer(a, n, k);
    /*
    cout << '\n';
    for(n_i = 0; n_i < n; ++n_i)
        cout << a[n_i] << ' ';
    */
}

void prvi() {
    uint8_t t, t_i; // 1 <= t <= 3
    uint32_t n, a_i, b_i; // 3 <= n <= 100000
    uint32_t m, m_i; // 1 <= m <= 200000
    uint32_t s, s_i; // 1 <= s <= n <= 100000

    cin >> t;


    for(t_i = 0; t_i < t; ++t_i) {
        unordered_map<uint32_t, unordered_set<uint32_t>> g;
        vector<uint32_t> s_array;
        unordered_map<uint32_t, uint32_t> test_map;
        unordered_set<uint32_t> test_set;
        cin >> n >> m >> s;
        // test_set.

        s_array.resize(s);
        for(s_i = 0; s_i < s; ++s_i)
            cin >> s_array[s_i];

        for(m_i = 0; m_i < m; ++m_i) {
            cin >> a_i >> b_i;
            g[a_i].emplace(b_i);
            g[b_i].emplace(a_i);
        }
    }
}

int main() {
    drugi();
}