hack过了,Wa #3#4#6#7,求hack
#include<bits/stdc++.h>
#define int long long
#define min(x,y) (x<y?x:y)
using namespace std;
const int N=1919810;
int n,a,b,head[N],id,to[N],ne[N],dfn[N],tot,low[N],ans=114514;
inline void add(int x,int y)
{
to[++id]=y,ne[id]=head[x],head[x]=id;
}
int dfs(int u)
{
static int v;
int flag=0;
low[u]=dfn[u]=++tot;
for(int i=head[u];i;i=ne[i])
{
v=to[i];
if(!dfn[v])
{
if(dfs(v))
{
flag=1;
if(dfn[u]<=low[v]&&u!=a)ans=min(ans,u);
}
low[u]=min(low[u],low[v]);
}else
{
low[u]=min(low[u],dfn[v]);
}
}
if(u==b)return 1;
return flag;
}
signed main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n;
int x,y;
cin>>x>>y;
while(x&&y)
{
add(x,y),add(y,x);
cin>>x>>y;
}
cin>>a>>b;
if(!dfs(a)||ans==114514)cout<<"No solution";
else cout<<ans;
}