/*
TASK:platka
LANG:C++
*/
#include<iostream>
using namespace std;
int n,m,a[1504][1504],brs[1504]; int q[20005],first,last;
void unused()
{
     int w[1506]={0};
     int i,br=0;
     for(i=1;i<=m+1;i++)
     {
                      w[q[i]]=1;
     }
     for(i=1;i<=n;i++)
     if(!w[i])br++;
     
     cout<<"Sorry, Pesho "<<br<<endl;
 }
void EULER(int pos)
{
    first=2,last=m+1;
     q[1]=pos;int l;
int i;
while(first<=last&&first>=0)
{
                  l=0;
                  for(i=1;i<=n;i++)
                  {
                                   if(a[q[first-1]][i]){l=1;q[first]=i;a[q[first-1]][i]=0;a[i][q[first-1]]=0;first++;break;}
                  
                  
                  }
                  if(l==0){q[last]=q[first-1];last--;first--;q[first]=0;}
                  
}     
 if(q[1]==0)unused();
 else
 {
 for(i=1;i<=m+1;i++)
 cout<<q[i]<<" ";
 cout<<endl;
}
 }
int main()
{
cin>>n>>m;
int i,x,y;
for(i=0;i<m;i++)
{
                cin>>x>>y;
                a[x][y]=1;
                a[y][x]=1;
                brs[x]++;
                brs[y]++;
}

int Max=1,Max2=0;
brs[0]=0;
for(i=1;i<=n;i++)
{
                 if(brs[i]>brs[Max])Max=i;
                 if(brs[i]%2==1&&brs[i]>brs[Max2])Max2=i;
}
if(Max2!=0)
EULER(Max2);
else
EULER(Max);




}
