#include <bits/stdc++.h>
#define int long long
using namespace std;
const int MX = 100005;
int n;
int a[MX], I[MX];
vector<int> pos[MX];
struct Node{
int sum;
Node *l, *r;
Node() : sum(0), l(nullptr), r(nullptr) {}
Node(Node *p) : sum(p->sum), l(p->l), r(p->r) {}
};
struct SMT{
int n;
vector<Node*> root;
SMT(int n = 0) : n(n), root(n + 5, nullptr) {
root[0] = new Node;
}
void pull(int id){
root[id] = new Node(root[id - 1]);
}
void update(int pos, int val){
Node *cur = root[val];
for(int lo=1, hi=n; lo<hi;){
int mid = (lo + hi)>>1;
cur->sum++;
if(pos <= mid){
cur->l = cur->l ? new Node(cur->l) : new Node;
cur = cur->l;
hi = mid;
}
else{
cur->r = cur->r ? new Node(cur->r) : new Node;
cur = cur->r;
lo = mid + 1;
}
}
cur->sum++;
}
int get(Node *cur, int l, int r, const int &u, const int &v){
if(cur == nullptr || l > v || r < u) return 0;
if(l >= u && r <= v) return cur->sum;
int mid = (l + r)>>1;
return get(cur->l, l, mid, u, v) + get(cur->r, mid + 1, r, u, v);
}
int get(int id, int l, int r){
return get(root[id], 1, n, l, r);
}
} smt(MX);
struct BIT{
int n;
vector<int> tree;
BIT(int n = 0) : n(n) ,tree(n + 5, 0) {}
void update(int idx, int val){
for(; idx<=n; idx+=-idx&idx) tree[idx] += val;
}
int get(int idx){
int res = 0;
for(; idx; idx-=-idx&idx) res += tree[idx];
return res;
}
void rupd(int idx, int val){
for(; idx; idx-=-idx&idx) tree[idx] += val;
}
int rget(int idx){
int res = 0;
for(; idx<=n; idx+=-idx&idx) res += tree[idx];
return res;
}
} bit(MX);
int calc_inversion(int l, int r){
int res = 0;
for(int i=r; i>=l; i--){
res += bit.get(a[i] - 1);
bit.update(a[i], 1);
}
for(int i=l; i<=r; i++) bit.update(a[i], -1);
return res;
}
int get(int val, int l, int r){
int res = 0;
for (int i = l; i <= r; i++) if (a[i] <= val) res++;
return res;
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
freopen("onlinv.inp","r",stdin);
freopen("onlinv.out","w",stdout);
cin >> n;
for(int i=1; i<=n; i++) cin >> a[i];
for(int i=1; i<=n; i++) pos[a[i]].push_back(i);
for(int i=1; i<=n; i++){
smt.pull(i);
for(int p: pos[i]) smt.update(p, i);
}
int last = 0;
set<int> st;
st.insert(1);
st.insert(n + 1);
I[1] = calc_inversion(1, n);
multiset<int> answer;
answer.insert(I[1]);
for(int i=1; i<=n; i++){
int p;
cin >> p;
p = p ^ last;
auto pR = st.upper_bound(p);
auto pL = prev(pR);
int l = *pL;
int r = *pR - 1;
int u1 = l, v1 = p - 1; // left range
int u2 = p + 1, v2 = r; // right range
int I1 = I[l];
int Ip = get(a[p] - 1, u2, v2) + (v1 - u1 + 1 - get(a[p], u1, v1));
int I2, I23, I3;
if(v1 - u1 < v2 - u2){
I2 = calc_inversion(u1, v1);
I23 = 0;
for(int j=u1; j<=v1; j++){
I23 += smt.get(a[j] - 1, u2, v2);
}
I3 = I1 - I2 - I23 - Ip;
}
else{
I3 = calc_inversion(u2, v2);
I23 = 0;
for(int j=u2; j<=v2; j++){
I23 += v1 - u1 + 1 - smt.get(a[j], u1, v1);
}
I2 = I1 - I3 - I23 - Ip;
}
// remove I1
// insert I2, I3
answer.erase(answer.find(I1));
answer.insert(I2);
answer.insert(I3);
I[l] = I2;
I[p + 1] = I3;
st.insert(p);
st.insert(p + 1);
last = *answer.rbegin();
cout << last << ' ';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaW50IGxvbmcgbG9uZwp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1YID0gMTAwMDA1OwppbnQgbjsKaW50IGFbTVhdLCBJW01YXTsKdmVjdG9yPGludD4gcG9zW01YXTsKCnN0cnVjdCBOb2RlewogICAgaW50IHN1bTsKICAgIE5vZGUgKmwsICpyOwogICAgTm9kZSgpIDogc3VtKDApLCBsKG51bGxwdHIpLCByKG51bGxwdHIpIHt9CiAgICBOb2RlKE5vZGUgKnApIDogc3VtKHAtPnN1bSksIGwocC0+bCksIHIocC0+cikge30KfTsKCnN0cnVjdCBTTVR7CiAgICBpbnQgbjsKICAgIHZlY3RvcjxOb2RlKj4gcm9vdDsKICAgIAogICAgU01UKGludCBuID0gMCkgOiBuKG4pLCByb290KG4gKyA1LCBudWxscHRyKSB7CiAgICAgICAgcm9vdFswXSA9IG5ldyBOb2RlOwogICAgfQoKICAgIHZvaWQgcHVsbChpbnQgaWQpewogICAgICAgIHJvb3RbaWRdID0gbmV3IE5vZGUocm9vdFtpZCAtIDFdKTsKICAgIH0KCiAgICB2b2lkIHVwZGF0ZShpbnQgcG9zLCBpbnQgdmFsKXsKICAgICAgICBOb2RlICpjdXIgPSByb290W3ZhbF07CiAgICAgICAgZm9yKGludCBsbz0xLCBoaT1uOyBsbzxoaTspewogICAgICAgICAgICBpbnQgbWlkID0gKGxvICsgaGkpPj4xOwogICAgICAgICAgICBjdXItPnN1bSsrOwogICAgICAgICAgICBpZihwb3MgPD0gbWlkKXsKICAgICAgICAgICAgICAgIGN1ci0+bCA9IGN1ci0+bCA/IG5ldyBOb2RlKGN1ci0+bCkgOiBuZXcgTm9kZTsKICAgICAgICAgICAgICAgIGN1ciA9IGN1ci0+bDsKICAgICAgICAgICAgICAgIGhpID0gbWlkOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICBjdXItPnIgPSBjdXItPnIgPyBuZXcgTm9kZShjdXItPnIpIDogbmV3IE5vZGU7CiAgICAgICAgICAgICAgICBjdXIgPSBjdXItPnI7CiAgICAgICAgICAgICAgICBsbyA9IG1pZCArIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY3VyLT5zdW0rKzsKICAgIH0gICAKCiAgICBpbnQgZ2V0KE5vZGUgKmN1ciwgaW50IGwsIGludCByLCBjb25zdCBpbnQgJnUsIGNvbnN0IGludCAmdil7CiAgICAgICAgaWYoY3VyID09IG51bGxwdHIgfHwgbCA+IHYgfHwgciA8IHUpIHJldHVybiAwOwogICAgICAgIGlmKGwgPj0gdSAmJiByIDw9IHYpIHJldHVybiBjdXItPnN1bTsKICAgICAgICBpbnQgbWlkID0gKGwgKyByKT4+MTsKICAgICAgICByZXR1cm4gZ2V0KGN1ci0+bCwgbCwgbWlkLCB1LCB2KSArIGdldChjdXItPnIsIG1pZCArIDEsIHIsIHUsIHYpOwogICAgfQoKICAgIGludCBnZXQoaW50IGlkLCBpbnQgbCwgaW50IHIpewogICAgICAgIHJldHVybiBnZXQocm9vdFtpZF0sIDEsIG4sIGwsIHIpOwogICAgfQp9IHNtdChNWCk7CgpzdHJ1Y3QgQklUewogICAgaW50IG47CiAgICB2ZWN0b3I8aW50PiB0cmVlOwoKICAgIEJJVChpbnQgbiA9IDApIDogbihuKSAsdHJlZShuICsgNSwgMCkge30KCiAgICB2b2lkIHVwZGF0ZShpbnQgaWR4LCBpbnQgdmFsKXsKICAgICAgICBmb3IoOyBpZHg8PW47IGlkeCs9LWlkeCZpZHgpIHRyZWVbaWR4XSArPSB2YWw7CiAgICB9CgogICAgaW50IGdldChpbnQgaWR4KXsKICAgICAgICBpbnQgcmVzID0gMDsKICAgICAgICBmb3IoOyBpZHg7IGlkeC09LWlkeCZpZHgpIHJlcyArPSB0cmVlW2lkeF07CiAgICAgICAgcmV0dXJuIHJlczsKICAgIH0KCiAgICB2b2lkIHJ1cGQoaW50IGlkeCwgaW50IHZhbCl7CiAgICAgICAgZm9yKDsgaWR4OyBpZHgtPS1pZHgmaWR4KSB0cmVlW2lkeF0gKz0gdmFsOwogICAgfQoKICAgIGludCByZ2V0KGludCBpZHgpewogICAgICAgIGludCByZXMgPSAwOwogICAgICAgIGZvcig7IGlkeDw9bjsgaWR4Kz0taWR4JmlkeCkgcmVzICs9IHRyZWVbaWR4XTsKICAgICAgICByZXR1cm4gcmVzOwogICAgfQp9IGJpdChNWCk7CgppbnQgY2FsY19pbnZlcnNpb24oaW50IGwsIGludCByKXsKICAgIGludCByZXMgPSAwOwogICAgZm9yKGludCBpPXI7IGk+PWw7IGktLSl7CiAgICAgICAgcmVzICs9IGJpdC5nZXQoYVtpXSAtIDEpOwogICAgICAgIGJpdC51cGRhdGUoYVtpXSwgMSk7CiAgICB9CiAgICBmb3IoaW50IGk9bDsgaTw9cjsgaSsrKSBiaXQudXBkYXRlKGFbaV0sIC0xKTsKICAgIHJldHVybiByZXM7Cn0KCmludCBnZXQoaW50IHZhbCwgaW50IGwsIGludCByKXsKICAgIGludCByZXMgPSAwOwogICAgZm9yIChpbnQgaSA9IGw7IGkgPD0gcjsgaSsrKSBpZiAoYVtpXSA8PSB2YWwpIHJlcysrOwogICAgcmV0dXJuIHJlczsKfQoKaW50MzJfdCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUoMCk7CgogICAgZnJlb3Blbigib25saW52LmlucCIsInIiLHN0ZGluKTsKICAgIGZyZW9wZW4oIm9ubGludi5vdXQiLCJ3IixzdGRvdXQpOwoKICAgIGNpbiA+PiBuOwogICAgZm9yKGludCBpPTE7IGk8PW47IGkrKykgY2luID4+IGFbaV07CiAgICBmb3IoaW50IGk9MTsgaTw9bjsgaSsrKSBwb3NbYVtpXV0ucHVzaF9iYWNrKGkpOwogICAgZm9yKGludCBpPTE7IGk8PW47IGkrKyl7CiAgICAgICAgc210LnB1bGwoaSk7CiAgICAgICAgZm9yKGludCBwOiBwb3NbaV0pIHNtdC51cGRhdGUocCwgaSk7CiAgICB9CgogICAgaW50IGxhc3QgPSAwOwogICAgc2V0PGludD4gc3Q7CiAgICBzdC5pbnNlcnQoMSk7CiAgICBzdC5pbnNlcnQobiArIDEpOwogICAgSVsxXSA9IGNhbGNfaW52ZXJzaW9uKDEsIG4pOwogICAgbXVsdGlzZXQ8aW50PiBhbnN3ZXI7CiAgICBhbnN3ZXIuaW5zZXJ0KElbMV0pOwoKICAgIGZvcihpbnQgaT0xOyBpPD1uOyBpKyspewogICAgICAgIGludCBwOwogICAgICAgIGNpbiA+PiBwOwogICAgICAgIHAgPSBwIF4gbGFzdDsKCiAgICAgICAgYXV0byBwUiA9IHN0LnVwcGVyX2JvdW5kKHApOwogICAgICAgIGF1dG8gcEwgPSBwcmV2KHBSKTsKICAgICAgICAKICAgICAgICBpbnQgbCA9ICpwTDsKICAgICAgICBpbnQgciA9ICpwUiAtIDE7CgogICAgICAgIGludCB1MSA9IGwsIHYxID0gcCAtIDE7IC8vIGxlZnQgcmFuZ2UKICAgICAgICBpbnQgdTIgPSBwICsgMSwgdjIgPSByOyAvLyByaWdodCByYW5nZQoKICAgICAgICBpbnQgSTEgPSBJW2xdOwogICAgICAgIGludCBJcCA9IGdldChhW3BdIC0gMSwgdTIsIHYyKSArICh2MSAtIHUxICsgMSAtIGdldChhW3BdLCB1MSwgdjEpKTsKICAgICAgICBpbnQgSTIsIEkyMywgSTM7CiAgICAgICAgaWYodjEgLSB1MSA8IHYyIC0gdTIpewogICAgICAgICAgICBJMiA9IGNhbGNfaW52ZXJzaW9uKHUxLCB2MSk7CiAgICAgICAgICAgIEkyMyA9IDA7CiAgICAgICAgICAgIGZvcihpbnQgaj11MTsgajw9djE7IGorKyl7CiAgICAgICAgICAgICAgICBJMjMgKz0gc210LmdldChhW2pdIC0gMSwgdTIsIHYyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBJMyA9IEkxIC0gSTIgLSBJMjMgLSBJcDsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgSTMgPSBjYWxjX2ludmVyc2lvbih1MiwgdjIpOwogICAgICAgICAgICBJMjMgPSAwOwogICAgICAgICAgICBmb3IoaW50IGo9dTI7IGo8PXYyOyBqKyspewogICAgICAgICAgICAgICAgSTIzICs9IHYxIC0gdTEgKyAxIC0gc210LmdldChhW2pdLCB1MSwgdjEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEkyID0gSTEgLSBJMyAtIEkyMyAtIElwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyByZW1vdmUgSTEKICAgICAgICAvLyBpbnNlcnQgSTIsIEkzCiAgICAgICAgYW5zd2VyLmVyYXNlKGFuc3dlci5maW5kKEkxKSk7CiAgICAgICAgYW5zd2VyLmluc2VydChJMik7CiAgICAgICAgYW5zd2VyLmluc2VydChJMyk7CgogICAgICAgIElbbF0gPSBJMjsKICAgICAgICBJW3AgKyAxXSA9IEkzOwogICAgCiAgICAgICAgc3QuaW5zZXJ0KHApOwogICAgICAgIHN0Lmluc2VydChwICsgMSk7CgogICAgICAgIGxhc3QgPSAqYW5zd2VyLnJiZWdpbigpOwogICAgICAgIGNvdXQgPDwgbGFzdCA8PCAnICc7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K