#include <bits/stdc++.h>
#define int long long

using namespace std;

vector<int>seg,freq;

void build(int i,int tl,int tr){
    if(tl==tr){
        //cout<<"set tl ("<<tl<<") to "<<freq[tl]<<'\n';
        seg[i]=freq[tl];
        return;
    }
    int mid=tl+tr>>1;
    build(i<<1,tl,mid);
    build(i<<1|1,mid+1,tr);
    seg[i]=seg[i<<1]+seg[i<<1|1];
}

int query(int i,int tl,int tr,int x,int cnt)
{
    if(tl==tr){
        return tl;
    }
    int mid=tl+tr>>1;
    if(seg[i<<1]+cnt>=x)return query(i<<1,tl,mid,x,cnt);
    else return query(i<<1|1,mid+1,tr,x,cnt+seg[i<<1]);
}

void update(int i,int tl,int tr,int x)
{
    if(tl==tr){
        seg[i]--;
        return;
    }
    int mid=tl+tr>>1;
    if(mid>=x)update(i<<1,tl,mid,x);
    else update(i<<1|1,mid+1,tr,x);
    seg[i]=seg[i<<1]+seg[i<<1|1];
}

vector<int>out;

void doit(vector<int> a,int k){
    int sum=0;
    for(int i=0;i<a.size();i++){
        if(a[i]>=sum)sum++;
        else sum--;
    }
    if(sum==k){
        out=a;
        return;
    }
    while(next_permutation(a.begin(),a.end())){
        int sum=0;
        for(int i=0;i<a.size();i++){
            if(a[i]>=sum)sum++;
            else sum--;
        }
        if(sum==k){
            out=a;
            return;
        }
    }
}


void solve()
{
    int t,mxsum=0,mnsum=0,mult=1;
    cin>>t;
    int n,k;
    cin>>n>>k;
    if(k<0){
        mult=-1;
        k=-k;
    }
    vector<int>a(n);
    for(int i=0;i<n;i++){
        cin>>a[i];
        a[i]*=mult;
    }
    vector<int>mxa(n),mna(n);
    sort(a.begin(),a.end());
    for(int i=0;i<n;i++){
        mxa[i]=a[i];
        mna[i]=a[n-i-1];
    }
    for(int i=0;i<n;i++){
        if(mxsum<=mxa[i])mxsum++;
        else mxsum--;
        if(mnsum<=mna[i])mnsum++;
        else mnsum--;
    }
    if(k>mxsum||k<mnsum||((n-k)%2)!=0){
        cout<<"NE\n";
        return;
    }
    if(n<=8){
        doit(a,k);
        cout<<"DA\n";
        for(auto i:out)cout<<i<<' ';
        cout<<'\n';
        return;
    }
    cout<<"DA\n";
    if(t==0)return;
    seg=vector<int>((n+1)<<3,0);
    freq=vector<int>((n+1)<<1,0);
    for(int i=0;i<n;i++){
        a[i]+=n;
        freq[a[i]]++;
    }
    build(1,0,2*n);
    int sum=0,down=(n-k)>>1;
    for(int i=0;i<n;i++){
        if(down>0){
            int val=query(1,0,n<<1,down,0)-n;
            if(val>=sum){
                sum++;
                val=query(1,0,n<<1,down+1,0)-n;
            }
            else {
                sum--;
                down--;
            }
            update(1,0,n<<1,val+n);
            cout<<val*mult<<' ';
        }
        else{
            int val=query(1,0,n<<1,1,0)-n;
            update(1,0,n<<1,val+n);
            cout<<val*mult<<' ';
        }
    }
    cout<<'\n';
}

signed main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    solve();
    return 0;
}