#include #include #include using namespace std; int N,A[1<<17],B[1<<17],C[1<<17]; long need[1<<17]; int deg[1<<17]; bool vis[1<<17]; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>N; for(int i=0;i>A[i]; for(int i=0;i>B[i]; for(int i=0;i>C[i],C[i]--; deg[C[i]]++; } vectorQ; for(int i=0;i >Lp; for(int i=0;i()); while(!vis[u]) { Lp.back().push_back(u); vis[u]=true; u=C[u]; } } long L=0,R=1e15; while(R-L>1) { long k=(L+R)/2; bool out=false; for(int i=0;i(long)1e15/k) { out=true; break; } need[i]=k*B[i]; } if(out) { R=k; continue; } for(int u:Q) { need[C[u]]+=max(need[u]-A[u],0L); if(need[C[u]]>(long)1e15)out=true; } for(int i=0;i(long)1e15)break; } if(sN>sA) { out=true; break; } } if(out)R=k; else L=k; } cout<