var a:array[1..10000,1..10000]of -1..1000;
ok:boolean;
f,g:text;
n,m,i,j,k,l,a1,a2,a3,nr,s:longint;
x:array[1..100]of 0..10000;
begin
assign(f,'distante.in');
reset(f);
assign(g,'distante.out');
rewrite(g);
readln(f,nr);
for l:=1 to nr do
begin
readln(f,n,m,s);
for i:=1 to n do read(f,x[i]);
for i:=1 to n do
for j:=1 to n do a[i,j]:=-1;
a[s,s]:=0;
readln(f);
for i:=1 to m do
begin
readln(f,a1,a2,a3);
a[a1,a2]:=a3;
a[a2,a1]:=a3;
end;
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
if (k<>i)and(k<>j) then
if (a[i,j]=-1) then begin if (a[i,k]<>-1)and(a[k,j]<>-1) then begin a[i,j]:=a[i,k]+a[k,j]; a[j,i]:=a[i,j]; end; end
else if (a[i,k]<>-1)and(a[k,j]<>-1)and(a[i,k]+a[k,j]<a[i,j]) then a[i,j]:=a[i,k]+a[k,j];
ok:=true;
for i:=1 to n do if x[i]<>a[s,i] then ok:=false;
if ok then writeln(g,'DA')
else writeln(g,'NU');
end;
close(f);
close(g);
end.