#include<bits/stdc++.h>
using namespace std;
const int N=205,inf=0x3f3f3f3f;
int n,m,tot,head[N],dis[N][N],pr[N*N*N],cnt;
bool vis[N][N][N],nv[N],flag;
struct qp{
int to,ne,val;
}e[N*N];
void add(int u,int v,int w){
e[++tot]={v,head[u],w};
head[u]=tot;
dis[u][v]=w;
}
void dfs(int u,int fa,int s,int t){
if(u==t){
bool nvis=0;
for(int i=1;i<=n;i++){
vis[s][t][i]=vis[s][t][i]&nv[i];
nvis=nvis|vis[s][t][i];
}
if(!nvis) flag=1;
return ;
}
for(int i=head[u];i;i=e[i].ne){
int v=e[i].to,w=e[i].val;
if(v==fa) continue;
if(dis[v][t]+w==dis[u][t]){
nv[v]=1;
dfs(v,u,s,t);
nv[v]=0;
if(flag) return ;
}
}
}
void getans(){
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
if(i==j) continue;
vis[i][j][i]=vis[i][j][j]=0;
for(int k=1;k<=n;k++)
if(vis[i][j][k]){
pr[++cnt]=k;
}
}
}
void prans(){
sort(pr+1,pr+1+cnt);
for(int i=1;i<=cnt;i++)
if(pr[i]!=pr[i-1]) cout<<pr[i]<<" ";
}
int main(){
memset(dis,inf,sizeof dis);
cin>>n>>m;
for(int i=1;i<=n;i++) dis[i][i]=0;
while(m--){
int u,v,w;
cin>>u>>v>>w;
add(u,v,w);
add(v,u,w);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++) vis[i][j][k]=1;
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
if(i==j || i==k || j==k) continue;
dis[j][i]=dis[i][j]=min(dis[i][k]+dis[k][j],dis[i][j]);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
if(dis[i][j]==inf || i==j) continue;
flag=0;
dfs(i,0,i,j);
}
getans();
prans();
if(!cnt) cout<<"No important cities.";
return 0;
}