#include using namespace std; using ll=long long; int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int n,m; cin>>n>>m; vector>> graph(n); for(int i=0;i>u>>v>>c; u--;v--; graph[u].push_back(make_pair(c,v)); //graph[v].push_back(make_pair(c,v)); } string s; cin>>s; random_device seed; mt19937 rnd(seed()); ll inf=1e18; ll ans=inf; for(int _=0;_<50;_++){ vector a(n); for(int i=0;i> dist(n,vector(4,inf)); dist[0][0]=0; using P=pair; priority_queue,greater

> pq; pq.push(make_pair(0,0)); while(!pq.empty()){ auto[d,vs]=pq.top(); pq.pop(); ll v=vs%n,s=vs/n; if(dist[v][s]d){ dist[v][s+1]=d; pq.push(make_pair(d,n*(s+1)+v)); } } } for(auto[c,u]:graph[v]){ if(dist[u][s]<=c+d)continue; dist[u][s]=c+d; pq.push(make_pair(c+d,s*n+u)); } } } if(ans==inf)cout<<-1<