#include <bits/stdc++.h>
using namespace std;

int t, n, k;
int a[200010];
bool nemoguce = false;

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	memset(a, 0, sizeof(a));

	cin >> t;
	cin >> n >> k;
	for(int i = 0; i < n; i++) {
		cin >> a[i];
	}
	nemoguce = false;
	vector<int> res;
	int curr = 0;
	sort(a, a+n);
	map<int, int> upper, lower;
	int uppercnt = 0, lowercnt = 0;
	for(int i = 0; i < n; i++) {
		if(a[i] < 0) {
			lower[a[i]]++;
			lowercnt++;
		}
		else {
			upper[a[i]]++;
			uppercnt++;
		}
	}
	for(int i = 0; i < n; i++) {
		if((curr < k && upper.size() == 0) ||
				(curr > k && lower.size() == 0)) {
			nemoguce = true;
			break;
		}
		if(curr <= k && upper.size() > 0) {
			prev(upper.end())->second--;
			uppercnt--;
			res.push_back(prev(upper.end())->first);
			if(prev(upper.end())->second == 0) {
				upper.erase(prev(upper.end()));
				if(upper.size() == 0) {
					curr++;
					continue;
				}
			}
			if(upper.begin()->first == curr) {
				uppercnt -= upper.begin()->second;
				lowercnt += upper.begin()->second;
				lower[upper.begin()->first] = upper.begin()->second;
				upper.erase(upper.begin());
			}
			curr++;
		}
		else {
			lower.begin()->second--;
			lowercnt--;
			res.push_back(lower.begin()->first);
			if(lower.begin()->second == 0) {
				lower.erase(lower.begin());
				if(lower.size() == 0) {
					curr--;
					continue;
				}
			}
			if(prev(lower.end())->first == curr-1) {
				uppercnt += prev(lower.end())->second;
				lowercnt -= prev(lower.end())->second;
				upper[prev(lower.end())->first] = prev(lower.end())->second;
				lower.erase(prev(lower.end()));
			}
			curr--;
		}
	}
	if(curr != k) {
		cout << "NE\n";
	}
	else {
		cout << "DA\n";
		if(t) {
			for(auto i : res) {
				cout << i << ' ';
			}
			cout << '\n';
		}
	}
	return 0;
}