#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
//#define LL_inf 1145141919810
//#define int long long
#define ull unsigned long long
#define ll long long
using namespace std;
const int Maxn=210;
const int Maxm=20010;
int head[Maxn],tot;
struct Edge{
int to,w;
int nxt;
}E[Maxm<<1];
void addedge(int u,int v,int w)
{
tot++;
E[tot].to=v;
E[tot].w=w;
E[tot].nxt=head[u];
head[u]=tot;
}
int dis[Maxn][Maxn];
int shortpath[Maxn][Maxn];
int k=-1;
void spfa(int s)
{
memset(dis[s],0x3f,sizeof(dis[s]));
dis[s][s]=0;
queue<int> q;
q.push(s);
while(!q.empty())
{
int u=q.front();
q.pop();
for(int i=head[u];i;i=E[i].nxt)
{
int v=E[i].to;
int w=E[i].w;
if(v==k)
{
continue;
}
if(dis[s][u]+w<dis[s][v])
{
dis[s][v]=dis[s][u]+w;
q.push(v);
}
}
}
}
int n,m;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
addedge(u,v,w);
addedge(v,u,w);
}
for(int i=1;i<=n;i++)
{
spfa(i);
for(int j=1;j<=n;j++)
{
shortpath[i][j]=dis[i][j];
// printf("%d %d,dis:%d\n",i,j,shortpath[i][j]);
}
}
vector<int> ans;
for(int i=1;i<=n;i++) //kill point
{
k=i;
bool flag=false;
// cout<<"i:"<<i<<endl;
for(int j=1;j<=n;j++)
{
if(j==k) continue;
spfa(j);
for(int l=1;l<=n;l++)
{
if(l==k) continue;
// cout<<j<<" "<<l<<",dis:"<<dis[j][l]<<endl;
if(shortpath[j][l]<dis[j][l])
{
ans.push_back(i);
flag=true;
break;
}
}
if(flag) break;
}
}
if(ans.size()==0)
{
puts("No important cities.");
return 0;
}
sort(ans.begin(),ans.end());
for(auto x:ans)
{
printf("%d ",x);
}
return 0;
}