import std.stdio;
import std.ascii;
import std.c.stdio;
import std.range;
import std.array;
import std.functional;
import std.algorithm;
import std.conv;
import std.container;
import std.math;
import std.numeric;
import std.string;
import std.c.string;
import std.regex;
import std.typecons;

void main() {
    int N, U, V, M;
    scanf("%d %d %d %d\n", &N, &U, &V, &M);

    int[][] R = new int[][N];
    foreach (i; 0 .. N) R[i] = readln.chomp.split(" ").map!(to!int).array;
    int[][] C = new int[][N];
    foreach (i; 0 .. N) C[i] = readln.chomp.split(" ").map!(to!int).array;

    alias Tuple!(int, "y", int, "x") P;
    P[int] Cmap, Rmap;
    foreach (i; 0 .. N) {
        foreach (j; 0 .. N) {
            Cmap[ C[i][j] ] = P(i, j);
            Rmap[ R[i][j] ] = P(i, j);
        }
    }

    if (N == 1) {
        bool r, c;
        foreach (i; 0 .. M) {
            int v; scanf("%d\n", &v);
            if (v in Rmap && U == 1) r = true;
            if (v in Cmap && V == 1) c = true;
            if (r && c) {
                writeln("DRAW"); return;
            } else if (r) {
                writeln("USAGI"); return;
            } else if (c) {
                writeln("NEKO"); return;
            }
        }
        writeln("DRAW"); return;
    }

    int Rcount, Ccount;
    auto Rrow = new int[N],
         Rcol = new int[N],
         Rdia = new int[2],
         Crow = new int[N],
         Ccol = new int[N],
         Cdia = new int[2];
    Rrow[] = N;
    Rcol[] = N;
    Rdia[] = N;
    Crow[] = N;
    Ccol[] = N;
    Cdia[] = N;
    foreach (_; 0 .. M) {
        int v;
        scanf("%d\n", &v);
        int y, x;
        if (v in Cmap) {
            y = Cmap[v].y; x = Cmap[v].x;
            C[y][x] = 0;
            Ccol[x]--;
            Crow[y]--;
            if (x == y) {
                Cdia[0]--;
                if (Cdia[0] == 0) Ccount++;
            }
            if (x + y == N - 1) {
                Cdia[1]--;
                if (Cdia[1] == 0) Ccount++;
            }
            if (Ccol[x] == 0) Ccount++;
            if (Crow[y] == 0) Ccount++;
        }
        if (v in Rmap) {
            y = Rmap[v].y; x = Rmap[v].x;
            R[y][x] = 0;
            Rcol[x]--;
            Rrow[y]--;
            if (x == y) {
                Rdia[0]--;
                if (Rdia[0] == 0) Rcount++;
            }
            if (x + y == N - 1) {
                Rdia[1]--;
                if (Rdia[1] == 0) Rcount++;
            }
            if (Rcol[x] == 0) Rcount++;
            if (Rrow[y] == 0) Rcount++;
        }
        //writeln([Rcount, Ccount]);
        if (Ccount >= V && Rcount >= U) {
            writeln("DRAW"); return;
        } else if (Ccount >= V) {
            writeln("NEKO"); return;
        } else if (Rcount >= U) {
            writeln("USAGI"); return;
        }
    }
    writeln("DRAW");
}