#include using lint=long long; using real=long double; int main(){ std::cin.tie(nullptr);std::ios_base::sync_with_stdio(false); std::cout.setf(std::ios_base::fixed);std::cout.precision(15); lint n;std::cin>>n; std::vector>g(n); for(lint i=1;i>p; g.at(p).push_back(i); } lint D=0; std::vectorord; auto dfs=[&](auto&&dfs, lint x, lint d)->void{ D+=d; ord.push_back(-x); for(lint y:g.at(x))dfs(dfs,y,d+1); ord.push_back(+x); }; dfs(dfs,0,0); lint inv=0; for(lint d=1;d<2*n;d<<=1){ lint sz=0; std::vectorswp(2*n); for(lint l=0,c,r;l<2*n;l=r){ c=std::min(2*n,l+d); r=std::min(2*n,c+d); for(lint i=l,j=c;i