#include <iostream>
#include <vector>
#include <map>

using namespace std;

int n,card;
void make_map(map<int,int>& col, map<int,int>& row, map<int,int>& dia, map<int,int>& rdia) {
	int temp;
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < n; ++j) {
			cin >> temp;
			col[temp] = j + 1;
			row[temp] = i + 1;
			if (i == j) {
				dia[temp] = n+1;
			}
			if (i+j == n-1) {
				rdia[temp] = n+2;
			}
		}
	}
}

bool check_line(int& count, map<int,int>& hash) {
	if (hash[card] > 0) {
		++count;
		if (count == n) {
			return true;
		}
	}
	return false;
}

int main(void) {
	int u,v,m;
	cin >> n >> u >> v >> m;
	map<int,int> rcol,ccol;
	map<int,int> rrow,crow;
	map<int,int> rdia,cdia;
	map<int,int> rrdia,crdia;
	if (n > 1) {
		make_map(rcol,rrow,rdia,rrdia);
		make_map(ccol,crow,cdia,crdia);
	}
	else {
		int temp;
		cin >> temp;
		rdia[temp] = 1;
		cin >> temp;
		cdia[temp] = 1;
	}

	int rc,cc;
	vector<int> rc_col(n,0),cc_col(n,0);
	vector<int> rc_row(n,0),cc_row(n,0);
	vector<int> rc_dia(2,0),cc_dia(2,0);
	rc = cc = 0;
	bool fin = false;
	for (int i = 0; i < m; ++i) {
		cin >> card;
		if (!fin) {
			if (check_line(rc_col[rcol[card]-1],rcol)) {
				++rc;
			}
			if (check_line(rc_row[rrow[card]-1],rrow)) {
				++rc;
			}
			if (check_line(rc_dia[0],rdia)) {
				++rc;
			}
			if (check_line(rc_dia[1],rrdia)) {
				++rc;
			}
			if (check_line(cc_col[ccol[card]-1],ccol)) {
				++cc;
			}
			if (check_line(cc_row[crow[card]-1],crow)) {
				++cc;
			}
			if (check_line(cc_dia[0],cdia)) {
				++cc;
			}
			if (check_line(cc_dia[1],crdia)) {
				++cc;
			}
			if (rc >= u && cc >= v) {
				cout << "DRAW" << endl;
				fin = true;
			}
			else if (rc >= u) {
				cout << "USAGI" << endl;
				fin = true;
			}
			else if (cc >= v) {
				cout << "NEKO" << endl;
				fin = true;
			}
		}
	}
	if (!fin) {
		cout << "DRAW" << endl;
	}
	return 0;
}