#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int a,b,n,ans,timee,root,low[110],dfn[110],cnt[110];
int fist[10100],to[10100],nex[10100],t;
void add(int x,int y)
{
to[++t]=y;
nex[t]=fist[x];
fist[x]=t;
return;
}
void tarjin(int u,int dad)
{
low[u]=dfn[u]=++timee;
int v;
for(int i=fist[u];i!=-1;i=nex[i])
{
v=to[i];
if(!dfn[v])
{
tarjin(v,u);
low[u]=min(low[u],low[v]);
if(low[v]>=dfn[u])
{
if(u!=a&&u!=b)
{
if(dfn[u]<=low[b])
ans=min(ans,u);
}
}
}
else if(v!=dad)
low[u]=min(low[u],dfn[v]);
}
return ;
}
int main()
{
memset(fist,-1,sizeof(fist));
scanf("%d",&n);
while(1)
{
scanf("%d%d",&a,&b);
if(a==0&&b==0) break;
add(a,b);
add(b,a);
}
scanf("%d%d",&a,&b);
ans=n+1;
tarjin(a,a);
if(ans>n) printf("No solution\n");
else printf("%d\n",ans);
return 0;
}