vector<int> G[N];
int dp[N];
int get(int u){
if(dp[u]) return dp[u];
for(auto it:G[u]){
dp[u]=max(dp[u],get(it)+1);
}
return dp[u];
}
vector<int> G[N];
int dp[N];
int get(int u){
if(dp[u]) return dp[u];
for(auto it:G[u]){
dp[u]=max(dp[u],get(it)+1);
}
return dp[u];
}