import java.util.*;
List<Integer>[] g; boolean[] v;
void dfs(int s){
v[s]=true; visit(s);
for(int nx: g[s]) if(!v[nx]) dfs(nx);
}
void bfs(int s){
Queue<Integer> q=new ArrayDeque<>();
v[s]=true; q.add(s);
while(!q.isEmpty()){
int cur=q.poll(); visit(cur);
for(int nx: g[cur]) if(!v[nx]){ v[nx]=true; q.add(nx); }
}
}