#include #include using namespace std; int main(void){ //入力 long long N; cin >> N; vector P(N),Q(N); for(int i=0;i> P[i]; P[i]--; } for(int i=0;i> Q[i]; Q[i]--; } //Q[i]がiになるようにP[i]を置き換えてもいい vector Qi(N),R(N); for(int i=0;i Ri(N); for(int i=0;iRi[i+1])M++; } //ブロックの個数のlog2(小数点以下切り上げ)が答え long long num = 2*M-1; long long Ans = 0; for(long long i=0;;i++){ if((num>>i)!=0){ Ans = i; }else{ break; } } cout << Ans << endl; return 0; }