#include <bits/stdc++.h>
#define pb push_back
#define ll long long int
#define pi pair<int, int>
#define all(x) x.begin(), x.end()

using namespace std;

ll k;

void Probajsve(ll ind, ll n, vector<ll>& a, vector<bool>& visited, vector<ll>& rds, vector<ll>& res, bool& mz)
{
    if(mz) return;
    if(ind>=n)
    {
        //cout<<"usao\n";
        ll rez=0;
        for(int i=0; i<n; i++)
        {
            if(rds[i]>=rez) rez++;
            else rez--;
            //cout<<rds[i]<<" ";
        }
        //cout<<"\n";
        if(rez==k)
        {
            for(int i=0; i<n; i++) res[i]=rds[i];
            mz=true;
        }
        return;
    }
    for(int i=0; i<n; i++)
    {
        if(mz) return;
        if(!visited[i])
        {
            visited[i]=true;
            rds[ind]=a[i];
            Probajsve(ind+1, n, a, visited, rds, res, mz);
            visited[i]=false;
            rds[ind]=0;
        }
    }
}

int main()
{
    /*ios_base::sync_with_stdio(false);
    cin.tie(0);*/

    ll t, n;
    cin>>t>>n>>k;
    vector<ll> a(n);
    bool tc1=true, tc3=true;
    for(int i=0; i<n; i++)
    {
        cin>>a[i];
        if(a[i]!=a[0])
        {
            tc1=false;
        }
        if(a[i]!=1 && a[i]!=-1) tc3=false;
    }
    if(tc1)
    {
        ll rez=0;
        if(n>abs(a[0]) && (n%2)!=(abs(a[0])%2)) rez=a[0]+1;
        else if(n>abs(a[0]) && (n%2)==(abs(a[0])%2)) rez=a[0];
        else if(n==abs(a[0])) rez=a[0];
        else rez=n*(a[0]/abs(a[0]));
        if(k!=rez) cout<<"NE\n";
        else
        {
            cout<<"DA\n";
            if(t==1) for(int i=0; i<n; i++) cout<<a[i]<<" ";
        }
    }
    else if(n<=8)
    {
        vector<bool> visited(n, false);
        vector<ll> rds(n, 0), res(n, 0);
        bool mz=false;
        Probajsve(0, n, a, visited, rds, res, mz);
        if(!mz) cout<<"NE\n";
        else
        {
            cout<<"DA\n";
            if(t==1) for(auto u:res) cout<<u<<" ";
        }
    }
    if(tc3)
    {
        ll brk=0, brmk=0;
        for(int i=0; i<n; i++)
        {
            if(a[i]==1) brk++;
            else if(a[i]==-1) brmk++;
        }
        ll maksi=0, mini=0;
        if(brmk%2==0) maksi=brk;
        else maksi=brk-1;
        mini=max(brk-brmk, -(abs(brmk-brk)%2));
        if(k>=mini && k<=maksi && abs(k)%2==maksi%2)
        {
            cout<<"DA\n";
            vector<ll> rez;
            while(maksi>k && brk>0 && brmk>0)
            {
                rez.pb(-1);
                rez.pb(1);
                brk--;
                brmk--;
                if(brk>0 && brmk>0)
                {
                    rez.pb(-1);
                    rez.pb(1);
                    brk--;
                    brmk--;
                }
                maksi-=2;
            }
            for(int i=0; i<brmk; i++)
            {
                rez.pb(-1);
            }
            for(int i=0; i<brk; i++)
            {
                rez.pb(1);
            }
            for(auto x: rez) cout<<x<<" ";
        }
        else cout<<"NE\n";
    }

}