#include<bits/stdc++.h>
using namespace std;
const int MAXN=202;
const int INF=1000000000;
int G[MAXN][MAXN];
int main()
{
freopen("in.txt","r",stdin);
fill(G[0],G[0]+MAXN*MAXN,INF);
int n,m;cin>>n>>m;
for(int i=0;i<m;i++){
int s,t,c;
cin>>s>>t>>c;
G[s][t]=G[t][s]=c;
}
int k;cin>>k;
int min=INF;int minid=-1;
for(int i=1;i<=k;i++){
int num;cin>>num;vector<int> ppp;ppp.resize(num);
int flag=0;
int ans=0;
int vis[n+1]={};
for(int j=0;j<num;j++){
cin>>ppp[j];
vis[ppp[j]]=1;
if(j!=0){
if(G[ppp[j]][ppp[j-1]]>=INF) flag=1;
else ans+=G[ppp[j]][ppp[j-1]];
}
}
int sign=1;
for(int j=1;j<=n;j++){
if(vis[j]==0) sign=-1;
}
if(flag==1){
printf("Path %d: NA (Not a TS cycle)\n",i);
}else{
if(sign==-1||ppp[0]!=ppp[num-1]){
printf("Path %d: %d (Not a TS cycle)\n",i,ans);
}else{
if(ans<min) min=ans,minid=i;
if(num==n+1){
printf("Path %d: %d (TS simple cycle)\n",i,ans);
}else{
printf("Path %d: %d (TS cycle)\n",i,ans);
}
}
}
}
printf("Shortest Dist(%d) = %d",minid,min);
return 0;
}