/*
TASK:platka
LANG:C++
*/
#include<iostream>
using namespace std;
int n,m,a[1504][1504],brs[1504]; int q[20005],first,last,cpy[1504][1504];
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 check()
{
     int i,j;

int w[1504]={0};
   
   
     w[q[1]]=1;
   
     for(i=2;i<=m+1;i++)
     {
                      if(cpy[q[i]][q[i-1]]==1){cpy[q[i]][q[i-1]]=0;cpy[q[i-1]][q[i]]=0;w[q[i]]=1;}
                      else
                      {int br=0;
                          for(j=1;j<=n;j++)
                          if(!w[j])br++;
                          cout<<"Sorry, Pesho "<<br<<endl;
                          exit(0);
                      }
     }
 
 
 
 for(i=1;i<=m+1;i++)
 cout<<q[i]<<" ";
 cout<<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;
*/
check();
}
 }
int main()
{
cin>>n>>m;
int i,x,y;
for(i=0;i<m;i++)
{
                cin>>x>>y;
                a[x][y]=1;cpy[x][y]=1;
                a[y][x]=1;cpy[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);




}
