rt,找不出来
#include<bits/stdc++.h>
#define int long long
#define db long double
#define Pii pair<int,int>
#define fi first
#define se second
#define inline
#define swap(x,y) x^=y^=x^=y
#define f(x,y) fixed<<setprecision(y)<<x
#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,rp,stdin),p1==p2)?EOF:*p1++)
using namespace std;
const int N=1e6+10;
const int rp=1e6+10;
int n,m,fl=1,hs[N],b[N],f[N],dep[N],lp[N];
vector<int> vt[N];
char buf[rp],*p1=buf,*p2=buf;
inline int read()
{
int x=0,f=1; char c=0;
while(!isdigit(c)){if(c=='-') f=-1; c=gc();}
while(isdigit(c)) x=(x<<3)+(x<<1)+(c^48),c=gc();
return x*f;
}
inline char read_ch()
{
char c=0;
while((!isalpha(c))||(c>='0'&&c<='9')) c=gc();
return c;
}
inline void dfs(int x)
{
dep[x]=dep[f[x]]+1;
for(auto a:vt[x])
{
if(a==f[x]) continue;
if(!dep[a]) f[a]=x,dfs(a);
else if(dep[a]<dep[x])
{
for(int i=x;;i=f[i])
{
lp[i]=1;
if(i==a) return;
}
}
}
}
inline void write(int x)
{
if(fl&&lp[x]&&x>=hs[x]) {fl=0; return;}
b[x]=1; cout<<x<<" ";
for(int i=0;i<vt[x].size();++i)
if(!b[vt[x][i]])
{
int a=vt[x][i]; hs[a]=hs[x];
for(int j=i+1;j<vt[x].size();++j)
if(!b[vt[x][j]]) {hs[a]=vt[x][j]; break;}
}
for(auto a:vt[x])
if(!b[a]) write(a);
}
signed main()
{
cin.tie(0)->sync_with_stdio(0);
cin>>n>>m; int u,v;
for(int i=1;i<=m;++i)
{
cin>>u>>v;
vt[u].push_back(v);
vt[v].push_back(u);
}
for(int i=1;i<=n;++i) sort(vt[i].begin(),vt[i].end());
if(m==n-1) write(1);
else dfs(1),hs[1]=1e9,write(1);
return 0;
}