#include <bits/stdc++.h>
using namespace std;
vector <int> G[10005];
int f[5005],q=0,vis[5005],x,y,n,m,b[5005],ux,uy,a[5005];
void dfs(int x){
f[++q] = x;
for(int i = 0; i < G[x].size(); ++i)
if(!vis[G[x][i]]) {
int y = G[x][i];
vis[y] = 1;
dfs(y);
}
}
void dfs1(int x){
a[++q] = x;
for(int i = 0; i < G[x].size(); ++i){
int y = G[x][i];
if((x==ux&&y==uy)||(x==uy&&y==ux)) continue;
if(!vis[y]){
vis[y] = 1;
dfs(y);
}
}
}
void choseans(){
int bj = 0;
for(int i = 1; i <= n; ++i){
if(a[i] < f[i]) {
bj = 1;
break;
}else if(a[i]>f[i]) break;
}
if(bj)
for(int i = 1; i <= n; ++i){
f[i] = a[i];
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i = 1; i <= m; ++i){
scanf("%d%d",&x,&y);
G[x].push_back(y);
G[y].push_back(x);
b[y]++;b[x]++;
}
for(int i = 1; i <= n; ++i)
sort(G[i].begin(),G[i].end());
vis[1] = 1;
dfs(1);
if(m==n-1){
for(int i = 1; i <= n; ++i) printf("%d ",f[i]);
}else if(m==n){
for(int i = 1; i <= n; ++i){
for(int j = 0; j < G[i].size(); ++j){
q = 0;
memset(vis,0,sizeof(vis));
memset(a,0,sizeof(a));
ux = i;uy = G[i][j];
vis[1] = 1;
dfs1(1);
if(q==n) choseans();
}
}
for(int i = 1; i <= n; ++i) printf("%d ",a[i]);
}
return 0;
}