#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define PhTrNghia "ONLINV"
using namespace std;
const int maxn = 2e5 + 5;
struct fenwick_tree{
int n;
vector <int> tree;
fenwick_tree(int _n){
n = _n;
tree.assign(n + 5, 0);
}
void update(int pos, int val){
for (; pos <= n; pos += -pos&pos) tree[pos] += val;
}
int get(int pos){
int res = 0;
for (; pos; pos -= -pos&pos) res += tree[pos];
return res;
}
int get(int l, int r){
if (l > r) return 0;
return get(r) - get(l - 1);
}
};
struct persistent_segtree{
struct node{
int sum;
node *l, *r;
node(){
sum = 0;
l = NULL;
r = NULL;
}
node(node *p){
sum = p->sum;
l = p->l;
r = p->r;
}
};
int n;
vector <node*> root;
persistent_segtree(int _n){
n = _n;
root.assign(n + 5, NULL);
root[0] = new node();
}
void pull(int id){
root[id] = new node(root[id - 1]);
}
node* update(node* id, int l, int r, int pos, int val){
if(!id) id = new node();
if (pos < l || pos > r) return id;
node* now = new node(id);
if (l == r){
now->sum += val;
return now;
}
int mid = (l + r) >> 1;
now->l = update(id->l, l, mid, pos, val);
now->r = update(id->r, mid + 1, r, pos, val);
int left_sum = now->l ? now->l->sum : 0;
int right_sum = now->r ? now->r->sum : 0;
now->sum = left_sum + right_sum;
return now;
}
void update(int version, int pos, int val){
root[version] = update(root[version], 1, n, pos, val);
}
int get(node* id, int l, int r, int u, int v){
if(!id || r < u || l > v) return 0;
if (u <= l && r <= v) return id->sum;
int mid = (l + r) >> 1;
return get(id->l, l, mid, u, v) + get(id->r, mid + 1, r, u, v);
}
int get(int version, int l, int r){
return get(root[version], 1, n, l, r);
}
};
fenwick_tree bit(maxn);
int n, a[maxn], inv[maxn];
vector <int> pos[maxn];
multiset <int> ans;
set <int> st;
int calc(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;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
if (fopen(PhTrNghia".iNP", "r")){
freopen(PhTrNghia".iNP", "r", stdin);
freopen(PhTrNghia".OUT", "w", stdout);
}
cin >> n;
persistent_segtree smt(n);
for (int i = 1; i <= n; i++){
cin >> a[i];
pos[a[i]].push_back(i);
}
for (int i = 1; i <= n; i++){
smt.pull(i);
for (int p: pos[i]) smt.update(i, p, 1);
}
inv[1] = calc(1, n);
ans.insert(inv[1]);
st.insert(1);
st.insert(n + 1);
int last = 0;
for (int i = 1; i <= n; i++){
int p;
cin >> p;
p ^= last;
auto pos_r = st.upper_bound(p);
auto pos_l = prev(pos_r);
int l = *pos_l;
int r = *pos_r - 1;
int u1 = l, v1 = p - 1;
int u2 = p + 1, v2 = r;
int i1 = inv[l];
int im = get(a[p] - 1, u2, v2) + (v1 - u1 + 1 - smt.get(a[p], u1, v1));
int i2, i3, i23;
if (v1 - u1 < v2 - u2){
i2 = calc(u1, v1);
i23 = 0;
for (int j = u1; j <= v1; j++) i23 += smt.get(a[j] - 1, u2, v2);
i3 = i1 - i2 - i23 - im;
} else {
i3 = calc(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 - im;
}
ans.erase(ans.find(i1));
ans.insert(i2);
ans.insert(i3);
inv[l] = i2;
inv[p + 1] = i3;
st.insert(p);
st.insert(p + 1);
last = *ans.rbegin();
cout << last << ' ';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIFBoVHJOZ2hpYSAiT05MSU5WIgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtYXhuID0gMmU1ICsgNTsKCnN0cnVjdCBmZW53aWNrX3RyZWV7CiAgICBpbnQgbjsKICAgIHZlY3RvciA8aW50PiB0cmVlOwogICAgZmVud2lja190cmVlKGludCBfbil7CiAgICAgICAgbiA9IF9uOwogICAgICAgIHRyZWUuYXNzaWduKG4gKyA1LCAwKTsKICAgIH0KICAgIAogICAgdm9pZCB1cGRhdGUoaW50IHBvcywgaW50IHZhbCl7CiAgICAgICAgZm9yICg7IHBvcyA8PSBuOyBwb3MgKz0gLXBvcyZwb3MpIHRyZWVbcG9zXSArPSB2YWw7CiAgICB9CiAgICAKICAgIGludCBnZXQoaW50IHBvcyl7CiAgICAgICAgaW50IHJlcyA9IDA7CiAgICAgICAgZm9yICg7IHBvczsgcG9zIC09IC1wb3MmcG9zKSByZXMgKz0gdHJlZVtwb3NdOwogICAgICAgIHJldHVybiByZXM7CiAgICB9CiAgICAKICAgIGludCBnZXQoaW50IGwsIGludCByKXsKICAgICAgICBpZiAobCA+IHIpIHJldHVybiAwOwogICAgICAgIHJldHVybiBnZXQocikgLSBnZXQobCAtIDEpOwogICAgfQp9OwoKc3RydWN0IHBlcnNpc3RlbnRfc2VndHJlZXsKICAgIHN0cnVjdCBub2RlewogICAgICAgIGludCBzdW07CiAgICAgICAgbm9kZSAqbCwgKnI7CiAgICAgICAgbm9kZSgpewogICAgICAgICAgICBzdW0gPSAwOwogICAgICAgICAgICBsID0gTlVMTDsKICAgICAgICAgICAgciA9IE5VTEw7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIG5vZGUobm9kZSAqcCl7CiAgICAgICAgICAgIHN1bSA9IHAtPnN1bTsKICAgICAgICAgICAgbCA9IHAtPmw7CiAgICAgICAgICAgIHIgPSBwLT5yOwogICAgICAgIH0KICAgIH07CiAgICAKICAgIGludCBuOwogICAgdmVjdG9yIDxub2RlKj4gcm9vdDsKICAgIAogICAgcGVyc2lzdGVudF9zZWd0cmVlKGludCBfbil7CiAgICAgICAgbiA9IF9uOwogICAgICAgIHJvb3QuYXNzaWduKG4gKyA1LCBOVUxMKTsKICAgICAgICByb290WzBdID0gbmV3IG5vZGUoKTsKICAgIH0KICAgIAogICAgdm9pZCBwdWxsKGludCBpZCl7CiAgICAgICAgcm9vdFtpZF0gPSBuZXcgbm9kZShyb290W2lkIC0gMV0pOwogICAgfQogICAgCiAgICBub2RlKiB1cGRhdGUobm9kZSogaWQsIGludCBsLCBpbnQgciwgaW50IHBvcywgaW50IHZhbCl7CiAgICAgICAgaWYoIWlkKSBpZCA9IG5ldyBub2RlKCk7CgogICAgICAgIGlmIChwb3MgPCBsIHx8IHBvcyA+IHIpIHJldHVybiBpZDsKCiAgICAgICAgbm9kZSogbm93ID0gbmV3IG5vZGUoaWQpOyAKCiAgICAgICAgaWYgKGwgPT0gcil7CiAgICAgICAgICAgIG5vdy0+c3VtICs9IHZhbDsKICAgICAgICAgICAgcmV0dXJuIG5vdzsKICAgICAgICB9CgogICAgICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CgogICAgICAgIG5vdy0+bCA9IHVwZGF0ZShpZC0+bCwgbCwgbWlkLCBwb3MsIHZhbCk7CiAgICAgICAgbm93LT5yID0gdXBkYXRlKGlkLT5yLCBtaWQgKyAxLCByLCBwb3MsIHZhbCk7CgogICAgICAgIGludCBsZWZ0X3N1bSAgPSBub3ctPmwgPyBub3ctPmwtPnN1bSA6IDA7CiAgICAgICAgaW50IHJpZ2h0X3N1bSA9IG5vdy0+ciA/IG5vdy0+ci0+c3VtIDogMDsKCiAgICAgICAgbm93LT5zdW0gPSBsZWZ0X3N1bSArIHJpZ2h0X3N1bTsKCiAgICAgICAgcmV0dXJuIG5vdzsKICAgIH0KCiAgICB2b2lkIHVwZGF0ZShpbnQgdmVyc2lvbiwgaW50IHBvcywgaW50IHZhbCl7CiAgICAgICAgcm9vdFt2ZXJzaW9uXSA9IHVwZGF0ZShyb290W3ZlcnNpb25dLCAxLCBuLCBwb3MsIHZhbCk7CiAgICB9CiAgICAKICAgIGludCBnZXQobm9kZSogaWQsIGludCBsLCBpbnQgciwgaW50IHUsIGludCB2KXsKICAgICAgICBpZighaWQgfHwgciA8IHUgfHwgbCA+IHYpIHJldHVybiAwOwoKICAgICAgICBpZiAodSA8PSBsICYmIHIgPD0gdikgcmV0dXJuIGlkLT5zdW07CgogICAgICAgIGludCBtaWQgPSAobCArIHIpID4+IDE7CgogICAgICAgIHJldHVybiBnZXQoaWQtPmwsIGwsIG1pZCwgdSwgdikgKyBnZXQoaWQtPnIsIG1pZCArIDEsIHIsIHUsIHYpOwogICAgfQogICAgCiAgICBpbnQgZ2V0KGludCB2ZXJzaW9uLCBpbnQgbCwgaW50IHIpewogICAgICAgIHJldHVybiBnZXQocm9vdFt2ZXJzaW9uXSwgMSwgbiwgbCwgcik7CiAgICB9Cn07CgpmZW53aWNrX3RyZWUgYml0KG1heG4pOwoKaW50IG4sIGFbbWF4bl0sIGludlttYXhuXTsKdmVjdG9yIDxpbnQ+IHBvc1ttYXhuXTsKbXVsdGlzZXQgPGludD4gYW5zOwpzZXQgPGludD4gc3Q7CgppbnQgY2FsYyhpbnQgbCwgaW50IHIpewogICAgaW50IHJlcyA9IDA7CiAgICBmb3IgKGludCBpID0gcjsgaSA+PSBsOyBpLS0pewogICAgICAgIHJlcyArPSBiaXQuZ2V0KGFbaV0gLSAxKTsKICAgICAgICBiaXQudXBkYXRlKGFbaV0sIDEpOwogICAgfQogICAgZm9yIChpbnQgaSA9IGw7IGkgPD0gcjsgaSsrKSBiaXQudXBkYXRlKGFbaV0sIC0xKTsKICAgIHJldHVybiByZXM7Cn0KCmludCBnZXQoaW50IHZhbCwgaW50IGwsIGludCByKXsKICAgIGludCByZXMgPSAwOwogICAgZm9yIChpbnQgaSA9IGw7IGkgPD0gcjsgaSsrKSBpZiAoYVtpXSA8PSB2YWwpIHJlcysrOwogICAgcmV0dXJuIHJlczsKfQoKc2lnbmVkIG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBpZiAoZm9wZW4oUGhUck5naGlhIi5pTlAiLCAiciIpKXsKICAgICAgICBmcmVvcGVuKFBoVHJOZ2hpYSIuaU5QIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbihQaFRyTmdoaWEiLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGNpbiA+PiBuOwogICAgcGVyc2lzdGVudF9zZWd0cmVlIHNtdChuKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7IAogICAgICAgIGNpbiA+PiBhW2ldOwogICAgICAgIHBvc1thW2ldXS5wdXNoX2JhY2soaSk7CiAgICB9CiAgICAKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICAgICAgc210LnB1bGwoaSk7CiAgICAgICAgZm9yIChpbnQgcDogcG9zW2ldKSBzbXQudXBkYXRlKGksIHAsIDEpOwogICAgfQogICAgCiAgICBpbnZbMV0gPSBjYWxjKDEsIG4pOwogICAgYW5zLmluc2VydChpbnZbMV0pOwogICAgc3QuaW5zZXJ0KDEpOwogICAgc3QuaW5zZXJ0KG4gKyAxKTsKICAgIGludCBsYXN0ID0gMDsKICAgIAogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKXsKICAgICAgICBpbnQgcDsKICAgICAgICBjaW4gPj4gcDsKICAgICAgICBwIF49IGxhc3Q7CiAgICAgICAgCiAgICAgICAgYXV0byBwb3NfciA9IHN0LnVwcGVyX2JvdW5kKHApOwogICAgICAgIGF1dG8gcG9zX2wgPSBwcmV2KHBvc19yKTsKICAgICAgICAKICAgICAgICBpbnQgbCA9ICpwb3NfbDsKICAgICAgICBpbnQgciA9ICpwb3NfciAtIDE7CiAgICAgICAgCiAgICAgICAgaW50IHUxID0gbCwgdjEgPSBwIC0gMTsKICAgICAgICBpbnQgdTIgPSBwICsgMSwgdjIgPSByOwogICAgICAgIAogICAgICAgIGludCBpMSA9IGludltsXTsKICAgICAgICBpbnQgaW0gPSBnZXQoYVtwXSAtIDEsIHUyLCB2MikgKyAodjEgLSB1MSArIDEgLSBzbXQuZ2V0KGFbcF0sIHUxLCB2MSkpOwogICAgICAgIAogICAgICAgIGludCBpMiwgaTMsIGkyMzsKICAgICAgICBpZiAodjEgLSB1MSA8IHYyIC0gdTIpewogICAgICAgICAgICBpMiA9IGNhbGModTEsIHYxKTsKICAgICAgICAgICAgaTIzID0gMDsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IHUxOyBqIDw9IHYxOyBqKyspIGkyMyArPSBzbXQuZ2V0KGFbal0gLSAxLCB1MiwgdjIpOwogICAgICAgICAgICBpMyA9IGkxIC0gaTIgLSBpMjMgLSBpbTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpMyA9IGNhbGModTIsIHYyKTsKICAgICAgICAgICAgaTIzID0gMDsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IHUyOyBqIDw9IHYyOyBqKyspIGkyMyArPSB2MSAtIHUxICsgMSAtIHNtdC5nZXQoYVtqXSwgdTEsIHYxKTsKICAgICAgICAgICAgaTIgPSBpMSAtIGkzIC0gaTIzIC0gaW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGFucy5lcmFzZShhbnMuZmluZChpMSkpOwogICAgICAgIGFucy5pbnNlcnQoaTIpOwogICAgICAgIGFucy5pbnNlcnQoaTMpOwogICAgICAgIAogICAgICAgIGludltsXSA9IGkyOwogICAgICAgIGludltwICsgMV0gPSBpMzsKICAgICAgICAKICAgICAgICBzdC5pbnNlcnQocCk7CiAgICAgICAgc3QuaW5zZXJ0KHAgKyAxKTsKICAgICAgICAKICAgICAgICBsYXN0ID0gKmFucy5yYmVnaW4oKTsKICAgICAgICBjb3V0IDw8IGxhc3QgPDwgJyAnOwogICAgfQogICAgcmV0dXJuIDA7Cn0=