#include <stdio.h>
#include <stdlib.h>

#define ARR_MAX 10000

void prikazNiza(int arr[ARR_MAX], int length)
{
    for(int i=0;i<length;i++){
        printf("%d", arr[i]);
        if(i<length-1) printf(" ");
    }
}

int utisak(int arr[ARR_MAX], int length){
    int trenutnaUvazenost = 0;
    for(int i=0;i<length;i++){
        if(trenutnaUvazenost<=arr[i]) trenutnaUvazenost++;
        else trenutnaUvazenost--;
    }
    return trenutnaUvazenost;
}



int main()
{
    int t, brojLjudi, m;

    scanf("%d", &t);
    scanf("%d %d", &brojLjudi, &m);

    int niz[brojLjudi];
    for(int i=0;i<brojLjudi;i++){
        scanf("%d", &niz[i]);
    }

    int korigovaNiz[brojLjudi];
    for(int i=0;i<brojLjudi;i++){
        korigovaNiz[i]=niz[i];
    }

    // ako je N neparan, samo neparni M su ostvarivi
    if(brojLjudi%2==m%2 || m==utisak(korigovaNiz, brojLjudi)){
        printf("DA");
        if(t==1){
            printf("\n");
            prikazNiza(korigovaNiz, brojLjudi);
        }
    }
    else
        printf("NE");
    //else if(t==0) printf("DA");
    // ne postoji test primer sa t=1 i rezultatom NE
    //else printf("NE");

    return 0;
}