#include<bits/stdc++.h>
using namespace std;
#define scan(a) scanf("%d",&a)
#define r5 100005
#define f(i,a,b) for(i=a;i<b;i++)
#define print(a) printf("%d\n",a)
#define pb push_back
#define nl printf("\n");
#define inf INT_MAX
typedef long long int lli;
typedef pair<int,int> ii;
vector< ii > adj[r5];
set< ii > q;
int dist[r5];
int main(){
int t;
scan(t);
while(t--){
q.clear();
int V,E,mx=0,i,j,a,b,c,start,end;
scan(V);
scan(E);
f(i,0,V+100){
dist[i]=inf;
adj[i].clear();
}
f(i,0,E){
scan(a);
scan(b);
scan(c);
adj[a].pb(ii(b,c));
}
scanf("%d%d",&start,&end);
//dijstra
dist[start]=0;
q.insert(ii(0,start));
vector< ii >::iterator it;
while(!q.empty()){
ii top=*q.begin();
int d=top.first,u=top.second;
q.erase(q.begin());
f(it,adj[u].begin(),adj[u].end())
{
int v=it->first,cost=it->second;
if(dist[v]>dist[u]+cost){
if(dist[v]!=inf){
q.erase(q.find(ii(dist[v],v)));
}
dist[v]=dist[u]+cost;
q.insert(ii(dist[v],v));
}
}
}
if(dist[end]<inf)
print(dist[end]);
else
printf("NO\n");
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgc2NhbihhKSBzY2FuZigiJWQiLCZhKQojZGVmaW5lIHI1IDEwMDAwNQojZGVmaW5lIGYoaSxhLGIpIGZvcihpPWE7aTxiO2krKykKI2RlZmluZSBwcmludChhKSBwcmludGYoIiVkXG4iLGEpCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgbmwgcHJpbnRmKCJcbiIpOwojZGVmaW5lIGluZiBJTlRfTUFYCnR5cGVkZWYgbG9uZyBsb25nIGludCBsbGk7CnR5cGVkZWYgcGFpcjxpbnQsaW50PiBpaTsKdmVjdG9yPCBpaSA+IGFkaltyNV07CnNldDwgaWkgPiBxOwppbnQgZGlzdFtyNV07CgppbnQgbWFpbigpewoJaW50IHQ7CglzY2FuKHQpOwoJd2hpbGUodC0tKXsKCQlxLmNsZWFyKCk7CgkJaW50IFYsRSxteD0wLGksaixhLGIsYyxzdGFydCxlbmQ7CgkJc2NhbihWKTsKCQlzY2FuKEUpOwoJCQoJCWYoaSwwLFYrMTAwKXsKCQkJZGlzdFtpXT1pbmY7CgkJCWFkaltpXS5jbGVhcigpOwoJCX0KCQkKCQlmKGksMCxFKXsKCQkJc2NhbihhKTsKCQkJc2NhbihiKTsKCQkJc2NhbihjKTsKCQkJYWRqW2FdLnBiKGlpKGIsYykpOwoJCX0KCQlzY2FuZigiJWQlZCIsJnN0YXJ0LCZlbmQpOwoJCgkJLy9kaWpzdHJhCgkKCQlkaXN0W3N0YXJ0XT0wOwoJCXEuaW5zZXJ0KGlpKDAsc3RhcnQpKTsKCQl2ZWN0b3I8IGlpID46Oml0ZXJhdG9yIGl0OwoJCQoJCXdoaWxlKCFxLmVtcHR5KCkpewoJCQlpaSB0b3A9KnEuYmVnaW4oKTsKCQkJaW50IGQ9dG9wLmZpcnN0LHU9dG9wLnNlY29uZDsKCQkJcS5lcmFzZShxLmJlZ2luKCkpOwoJCQlmKGl0LGFkalt1XS5iZWdpbigpLGFkalt1XS5lbmQoKSkKCQkJewoJCQkJaW50IHY9aXQtPmZpcnN0LGNvc3Q9aXQtPnNlY29uZDsKCQkJCWlmKGRpc3Rbdl0+ZGlzdFt1XStjb3N0KXsKCQkJCQlpZihkaXN0W3ZdIT1pbmYpewoJCQkJCQlxLmVyYXNlKHEuZmluZChpaShkaXN0W3ZdLHYpKSk7CgkJCQkJfQoJCQkJCWRpc3Rbdl09ZGlzdFt1XStjb3N0OwoJCQkJCXEuaW5zZXJ0KGlpKGRpc3Rbdl0sdikpOwoJCQkJfQoJCQl9CgkJfQoJCQoJCWlmKGRpc3RbZW5kXTxpbmYpCgkJcHJpbnQoZGlzdFtlbmRdKTsKCQllbHNlCgkJcHJpbnRmKCJOT1xuIik7Cgl9CglyZXR1cm4gMDsKfQo=