#include <bits/stdc++.h>
using namespace std;
vector <int> G[500005];
int dfn[105], low[500005], n, Index, root;
bool ifcut[500005];
int a, b, minn = INT_MAX;
void Tarjian_poi (int u, int fat)
{
int child = 0;
dfn[u] = low[u] = ++Index;
for (int i = 0 ; i < G[u].size () ; i++)
{
int v = G[u][i];
if (dfn[v] == 0)
{
child++;
Tarjian_poi (v, u);
low[u] = min (low[u], low[v]);
if (low[v] >= dfn[u])
{
if (u != root && dfn[b] >= dfn[v]) ifcut[u] = 1;
}
} else {
if (v != fat) low[u] = min (low[u], dfn[v]);
}
}
}
signed main ()
{
cin >> n;
while (1)
{
int u, v;
cin >> u >> v;
if (u == 0 && v == 0) break;
G[u].push_back (v);
G[v].push_back (u);
}
cin >> a >> b;
root = a;
Tarjian_poi (a, a);
for (int i = 1 ; i <= n ; i++)
{
if (ifcut[i]) minn = min (minn, i);
}
if (minn == INT_MAX) cout << "No solution";
else cout << minn;
return 0;
}