#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <climits>
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
#include <utility>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <functional>

using namespace std;

#define fst first
#define scd second
#define PB push_back
#define MP make_pair
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define omajinai ios::sync_with_stdio(false);cin.tie(0)

typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int, int> pii;
typedef vector<pii> vpii;

template<typename T>T& max(T&a,T&b){if(a>=b)return a;return b;}
template<typename T>T& min(T&a,T&b){if(a<b)return a;return b;}
template<typename T>bool chmax(T&a,T b){if(a<b){a=b;return true;}return false;}
template<typename T>bool chmin(T&a,T b){if(a>b){a=b;return true;}return false;}
template<typename T>T get(){T a;cin>>a;return a;}
template<typename T>T rev(T a){reverse(all(a));return a;}
template<typename T>vector<T>&sort(vector<T>&a){sort(all(a));return a;}

const int inf = 1e9;
const ll linf = 3e18;
const double eps = 1e-9;

int n, u, v, m;

pii usacard[1000001], nekocard[1000001];
int usarow[501], usacol[501], usaul, usaur;
int nekorow[501], nekocol[501], nekoul, nekour;

signed main()
{
    scanf("%d%d%d%d", &n, &u, &v, &m);

    fill_n(usacard, 1000001, pii(-1, 0));
    fill_n(nekocard, 1000001, pii(-1, 0));

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            int a; scanf("%d", &a);
            usacard[a] = pii(i, j);
        }
    }

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            int a; scanf("%d", &a);
            nekocard[a] = pii(i, j);
        }
    }

    int usa = 0, neko = 0;

    for (int i = 0; i < m; ++i) {
        int num; scanf("%d", &num);

        pii p;

        {
            p = usacard[num];
            if (p.fst == -1) goto pos1;

            if (n == 1) {
                usa++;
                goto pos1;
            }

            usarow[p.fst]++;
            usa += usarow[p.fst] == n;

            usacol[p.scd]++;
            usa += usacol[p.scd] == n;

            if (p.fst == p.scd) {
                usaul++;
                usa += usaul == n;
            }

            if (p.fst == n - p.scd - 1) {
                usaur++;
                usa += usaur == n;
            }

            pos1:;
        }

        {
            p = nekocard[num];
            if (p.fst == -1) goto pos2;
            
            if (n == 1) {
                neko++;
                goto pos2;
            }

            nekorow[p.fst]++;
            neko += nekorow[p.fst] == n;

            nekocol[p.scd]++;
            neko += nekocol[p.scd] == n;

            if (p.fst == p.scd) {
                nekoul++;
                neko += nekoul == n;
            }

            if (p.fst == n - p.scd - 1) {
                nekour++;
                neko += nekour == n;
            }

            pos2:;
        }

        if (usa >= u && neko >= v) {
            puts("DRAW");
            return 0;
        }

        if (usa >= u) {
            puts("USAGI");
            return 0;
        }

        if (neko >= v) {
            puts("NEKO");
            return 0;
        }
    }

    puts("DRAW");
}

Measured memory_bytes: 16804