# include <stdio.h>
# include <string.h>
# define _fin "amlei.in"
# define _fout "amlei.out"
# define maxn 52
# define maxt 502
typedef struct form
{
int a[maxt], s;
} form;
form a[maxt], b[maxt], aux;
int n, t, u, sa, sb, sol;
int B[maxn];
FILE *fin;
void intercl(int l, int r, int A[])
{
if (l==r) return;
int m = (l+r) >> 1, i, j, k;
intercl(l, m, A), intercl(m+1, r, A);
for (i=l, j=m+1, k=l; i<=m || j<=r; )
B[ k++ ] = A[ j>r || (i<=m && A[i]<A[j]) ? i++ : j++ ];
for (k=l; k<=r; k++) A[k] = B[k];
}
int search(form x, form a[], int r)
{
int i, j, ok;
for (i=1; i<=r; i++)
if ( a[i].s==x.s ) {
for (j=ok=1; j<=n && ok; j++) ok = (a[i].a[j]==x.a[j]);
if ( ok ) return 1;
}
return 0;
}
int _search(form x, form a[], int l, int r)
{
int i, j, ok;
for (i=l; i<=r; i++)
{
for (j=ok=1; j<=n && ok; j++) ok = (a[i].a[j]==x.a[j]);
if ( ok ) return 1;
}
return 0;
}
void readf()
{
int i, j;
fscanf(fin, "%d%d%d", &n, &t, &u);
if ( feof(fin) ) return;
for (sa=sb=0, i=1; i<=t; i++) {
for (aux.s=0, j=1; j<=n; j++) fscanf(fin, "%d", &aux.a[j]), aux.s += aux.a[j];
intercl(1, n, aux.a);
if ( !search(aux, a, sa) ) a[ ++sa ] = aux;
}
for (i=1; i<=u; i++) {
for (aux.s=0, j=1; j<=n; j++) fscanf(fin, "%d", &aux.a[j]), aux.s += aux.a[j];
intercl(1, n, aux.a);
if ( !search(aux, b, sb) ) b[ ++sb ] = aux;
}
}
void solve()
{
// sort a & b by sums
int i, j, hs, ts;
form sw;
for (i=1; i<sa; i++)
for (j=i+1; j<=sa; j++)
if ( a[i].s > a[j].s ) sw=a[i], a[i]=a[j], a[j]=sw;
for (i=1; i<sb; i++)
for (j=i+1; j<=sb; j++)
if ( b[i].s > b[j].s ) sw=b[i], b[i]=b[j], b[j]=sw;
if ( a[1].s==b[1].s && sa==sb )
{
for (hs=ts=1; b[ts].s==b[hs].s && ts<=sb; ++ts);
for (i=sol=1; i<=sa && sol; i++)
{
if ( a[i].s > b[hs].s ) {
if ( b[ts].s != a[i].s || ts>sb ) {
sol=0; break;
}
else for (hs=ts; b[ts].s==b[hs].s && ts<=sb; ++ts);
}
sol = _search(a[i], b, hs, ts-1);
}
}
else sol=0;
}
int main()
{
fin=fopen(_fin, "r");
freopen(_fout,"w", stdout);
while ( 1 )
{
readf();
if ( feof(fin) ) break;
solve();
printf("%s\n", sol?"DA":"NU");
}
return 0;
}