#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m,head[5005],t;
queue< int > v;
struct oppo{
ll to,next;
}rood[16000];
bool sb[16000];
ll f[5005];
ll a[5005],ans[5005];
void add(ll from,ll to)
{
rood[++t].to=to;
rood[t].next=head[from];
head[from]=t;
}
bool bj()
{
for(int i=1;i<=n;i++)
if(a[i]<ans[i])
return 1;
else if(ans[i]<a[i])
return 0;
return 0;
}
void dfs(int x,int all)
{
if(all==n)
{
if(bj())
for(int i=1;i<=n;i++)
ans[i]=a[i];
return;
}
ll MIN=99999;
bool fff=1;
for(int i=head[x];i;i=rood[i].next)
if(!f[rood[i].to]&&!sb[i])
{
fff=0;
MIN=min(MIN,rood[i].to);
}
if(MIN!=99999)
{
f[MIN]=x;
a[all+1]=MIN;
if(bj())
dfs(MIN,all+1);
f[MIN]=0;
}
if(f[x]!=-1&&fff)
dfs(f[x],all);
}
int main()
{
//freopen("travel.in","r",stdin);
// freopen("travel.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=m;i++)
{
ll t1,t2;
cin>>t1>>t2;
add(t1,t2);
add(t2,t1);
}
f[1]=-1;
a[1]=1;
memset(ans,0x3f,sizeof(ans));
if(m!=n)
{
dfs(1,1);
}
else
for(int i=1;i+1<=t;i+=2)
{
memset(a,0,sizeof(a));
a[1]=1;
sb[i]=1;
sb[i+1]=1;
dfs(1,1);
sb[i]=0;
sb[i+1]=0;
}
for(int i=1;i<=n;i++)
cout<<ans[i]<<" ";
return 0;
}