#include<fstream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef struct lnod {
int info,c;
lnod *next;
}*nod;
int t,n,m,s,i,d[50005],x,y,c;
bool u,viz[50005];
int main()
{
ifstream cin("distante.in");
ofstream cout("distante.out");
cin>>t;
while(t--)
{
memset(viz,0,sizeof(viz));
cin>>n>>m>>s; viz[s]=1;
for(i=1;i<=n;++i) cin>>d[i];
u=(d[s]) ? 1:0;
for(i=1;i<=m && !u;++i)
{
cin>>x>>y>>c;
if(d[x]+c<d[y]) u=1;
if(d[x]+c==d[y]) viz[y]=1;
}
for(i=1;i<=n && !u;++i)
if(!viz[i]) u=1;
if(u) cout<<"NU\n"; else cout<<"DA\n";
}
return 0;
}