#include <iostream>
#include <fstream>
using namespace std;
const int nm=50001;
const int mm=100001;
const int inf=1<<30;
ifstream in("distante.in");
ofstream out("distante.out");
struct lista
{ int v;
int c;
lista * urm ;
};
lista *cap[nm],*nou;
int d[nm],coada[mm],n,m,dm[nm];
void dj(int s)
{ int pi=1,ps=1,i;
for(i=1;i<=n;i++)
d[i]=inf;
d[s]=0;
coada[1]=s;
while(pi<=ps)
{ nou=cap[coada[pi]];
while(nou)
{if(d[nou->v]>d[coada[pi]]+nou->c)
{ ps++;
d[nou->v]=d[coada[pi]]+nou->c;
coada[ps]=nou->v;
} nou=nou->urm; } pi++;
}
}
int main()
{ int a,b,c,s,t,i,j;
in>>t;
for(j=1;j<=t;j++)
{ in>>n>>m>>s;
for(i=1;i<=n;i++)
{in>>a;dm[i]=a;}
for(i=1;i<=m;i++)
{in>>a>>b>>c;
nou=new lista;
nou->v=b;
nou->c=c;
nou->urm=cap[a];
cap[a]=nou;
nou=new lista;
nou->v=a;
nou->c=c;
nou->urm=cap[b];
cap[b]=nou;
}
dj(s);a=0;
for(i=1;i<=n;i++)
if(d[i]!=dm[i])a=1;
if(a==0)out<<"DA"<<"\n";
else out<<"NU"<<"\n";
/*for(i=1;i<=n;i++)
{ nou=cap[i];
while(nou!=NULL)
{ out<<nou->v<<" ";
nou=nou->urm;
}
out<<"\n";
}*/
for(i=1;i<=n;i++)
cap[i]=NULL;
}
return 0;
}