/*
TASK:platka
LANG:C++
*/
#include <iostream>
using namespace std;
bool a[1501][1501]={false},way=false,got[1501]={false},p[1501][1501]={false};
int que[20002],e=-1,n,m;
void dfs (int k) {
	int i,l;
	got[k]=true; que[++e]=k; bool f=true;
	for (i=1;i<=n;i++)
		for (l=1;l<=n;l++)
			f=(f && (a[i][l]==p[i][l]));
	if (f) {
		if (way) goto x;
		way=true; i=0;
		while (que[i]) cout << que[i++] << " ";
	}
	x: for (i=1;i<=n;i++) if (a[i][k] && !p[i][k]) {
		p[i][k]=p[k][i]=true;
		dfs(i);
		p[i][k]=p[k][i]=false;
	}
	que[e--]=0;
}
int main () {
	int j,g,b;
	cin >> n >> m;
	for (j=1;j<=m;j++) {
		cin >> g >> b;
		a[g][b]=a[b][g]=true;
	}
	g=0;
	for (j=1;j<=n;j++) {
		dfs(j);
		if (j==1) for (b=1;b<=n;b++) if (!got[b]) g++;
	}
	if (!way) cout << "Sorry, Pesho " << g << endl;
	return 0;
}
