#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,m,a[500005],cnt,rd[500005],maxn;
bool vis[500005],flag;
vector<int> v[500005];
void dfs(int x,int fa){
a[++cnt]=x;
for(int i=0;i<v[x].size();i++){
int y=v[x][i];
if(y!=fa){
dfs(y,x);
}
}
}
void top_sort(){
queue<int> q;
for(int i=1;i<=n;i++){
if(rd[i]==1){
q.push(i);
}
}
while(!q.empty()){
int x=q.front();
q.pop();
for(int i=0;i<v[x].size();i++){
int y=v[x][i];
rd[y]--;
if(rd[y]==1){
q.push(y);
}
}
}
}
void dfs1(int x){
vis[x]=1;
a[++cnt]=x;
if(rd[x]==2){
bool ll=0;
if(!flag){
for(int i=0;i<v[x].size();i++){
int y=v[x][i];
if(!vis[y]){
if(rd[y]==2){
i++;
while(i<v[x].size()&&vis[v[x][i]]){
i++;
}
if(i!=v[x].size()){
maxn=v[x][i];
}else if(y>maxn){
flag=1;
ll=1;
break;
}
}
}
}
}
for(int i=0;i<v[x].size();i++){
int y=v[x][i];
if(ll&&rd[y]==2){
continue;
}
if(!vis[y]){
dfs1(y);
}
}
}else{
for(int i=0;i<v[x].size();i++){
int y=v[x][i];
if(!vis[y]){
dfs1(y);
}
}
}
}
signed main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
rd[x]++;
rd[y]++;
}
for(int i=1;i<=n;i++){
sort(v[i].begin(),v[i].end());
}
if(m==n-1){
dfs(1,-1);
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
}else{
top_sort();
dfs1(1);
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
}
return 0;
}