type arr=record v,nt:longint; end; const maxn=10008; lx=20; var lt:array[0..maxn] of longint; eg:array[0..maxn*2] of arr; d:array[0..maxn] of longint; g:array[0..maxn,0..lx] of longint; n,i,x,y,a,b,sum:longint; procedure swap(var a,b:longint); var c:longint; begin c:=a; a:=b; b:=c; end; procedure add(x,y:longint); begin inc(sum); eg[sum].nt:=lt[x]; eg[sum].v:=y; lt[x]:=sum; end; procedure Tinit(x,fa:longint); var i:longint; begin g[x,0]:=fa; d[x]:=d[fa]+1; for i:=1 to lx do g[x,i]:=g[g[x,i-1],i-1]; i:=lt[x]; while i<>0 do begin if eg[i].v<>fa then Tinit(eg[i].v,x); i:=eg[i].nt; end; end; function Tlca(x,y:longint):longint; var dep,i:longint; begin if d[x]<d[y] then swap(x,y); dep:=d[x]-d[y]; for i:=0 to lx-1 do if dep and (1<<i) >0 then x:=g[x,i]; if x=y then exit(x); for i:=lx-1 downto 0 do if g[x,i]<>g[y,i] then begin x:=g[x,i]; y:=g[y,i]; end; exit(g[x][0]); end; function Tdist(x,y:longint):longint; begin exit(d[x]+d[y]-d[Tlca(x,y)]*2); end; begin readln(n,a,b); sum:=0; while not eof do begin read(x); while not eoln do begin read(y); add(x,y); add(y,x); end; readln; end; Tinit(1,0); writeln(Tlca(a,b)); writeln(Tdist(a,b)); end.