/*
TASK:platka
LANG:C++
*/
#include <iostream>
using namespace std;
int a[2000][2000],b[2000],path[2000],bestp[2000],n,used[2000];
void dfs2(int u){
     if(path[0]>bestp[0]){
               bestp[0]=path[0];for(int i=0;i<=path[0];i++) bestp[i]=path[i];}
     for(int i=1;i<=n;i++) if(a[i][u]==1){
                       path[0]++;path[path[0]]=i;
                       a[i][u]=0;
                       a[u][i]=0;
                       b[u]--;
                       dfs2(i);
                       b[u]++;
                       a[i][u]=1;
                       a[u][i]=1;
                       path[0]--;
                       }
                       }
void dfs(int u){
    //for(int i=1;i<=path[0];i++) cout << path[i] << ' '; cout << endl;system("pause"); 
    if(path[0]!=11 && bestp[0]!=11){
               for(int i=1;i<=n;i++) if(a[i][u]==1){
                       path[0]++;path[path[0]]=i;
                       a[i][u]=0;
                       a[u][i]=0;
                       b[u]--;
                       dfs(i);
                       b[u]++;
                       a[i][u]=1;
                       a[u][i]=1;
                       path[0]--;
                       }
                       }else if(path[0]==11) for(int i=0;i<=path[0];i++) bestp[i]=path[i];
                             
                       }
int main(){
    int m;
    cin >> n >> m;
    for(int i=0;i<m;i++){
            int u,v;
            cin >> u >> v;
            a[u][v]=1;a[v][u]=1;
            b[u]++;
            b[v]++;
            }
    int nech=0,pv;
    for(int i=1;i<=n;i++) if(b[i]%2==1){if(nech==0) pv=i;nech++;}
    path[0]=1;
    path[1]=pv;
    if (nech==0 || nech==2) {dfs(pv);
    for(int i=1;i<bestp[0];i++) cout << bestp[i] << ' ';
    cout << bestp[bestp[0]] << endl;} else {
         dfs2(pv);
         for(int i=1;i<=bestp[0];i++) used[bestp[i]]=1;
         int c=0;
         for(int i=1;i<=n;i++) if (used[i]==0) c++;
         cout << "Sorry, Pesho " << c << endl;}
    return 0;
}
