#include<bits/stdc++.h>
#include<bits/extc++.h>
using namespace std;
using namespace __gnu_pbds;
constexpr int M=3e5+5;
cc_hash_table<int,int>mp[M];
int n,m;vector<int>ans1,ans2;
int read(){
int x=0;char ch=getchar();
while (!isdigit(ch)) ch=getchar();
while (isdigit(ch)) x=x*10+ch-48,ch=getchar();
return x;
}
int check(int x,int y){return mp[x].find(y)!=mp[x].end();}
int main(){
n=read();m=read();
for (int i=1;i<=m;i++){
int x=read(),y=read();
mp[x][y]=mp[y][x]=1;
}
ans1={2};
for (int i=3;i<=n;i++){
int p=check(1,ans1[0]);
if (p==check(ans1.back(),i)){
ans1.emplace_back(i);
if (!ans2.empty()&&p==check(i,ans2.back()))
ans1.emplace_back(ans2.back()),ans2.pop_back();
}
else {
ans2.emplace_back(ans1.back());ans1.pop_back();
ans2.emplace_back(i);
if (!ans1.empty()&&p!=check(ans1.back(),ans2.back()))
ans2.emplace_back(ans1.back()),ans1.pop_back();
if (ans1.empty()&&check(1,ans2.back())!=p){
reverse(ans2.begin(),ans2.end()),swap(ans1,ans2);
else ans1.emplace_back(ans2.back()),ans2.pop_back();
}
}
printf("1 ");
for (auto x:ans1) printf("%d ",x);
reverse(ans2.begin(),ans2.end());
for (auto x:ans2) printf("%d ",x);
return 0;
}