void dfs(int now){
    visited[now] = true;
    st.insert(now);
    for(int next:graph[now])
        if(!visited[next])
            dfs(next);
}
int dfs2(int now){
    visited[now] = true;
    if(st.find(now) != st.end())
        return now;
    for(int next: graph[now])
        if(!visited[next])
            return dfs2(next);
}
int solve(int a, int b){
    st.clear();
    memset(visited, false, sizeof(visited));
    dfs(a);
    memset(visited, false, sizeof(visited));
    return dfs2(b);
}