#include <bits/stdc++.h>
using namespace std;
#define ull unsigned long long
#define ll long long
#define fast ios::sync_with_stdio(false); cin.tie(nullptr);
struct Node {
ll key;
int pr;
int sz;
ll lz;
Node *l, *r;
Node(ll _key, int _pr): key(_key), pr(_pr), sz(1), lz(0), l(nullptr), r(nullptr) {}
};
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int getsz(Node* t) {
return t ? t->sz : 0;
}
void upd(Node* t) {
if (t) {
t->sz = 1 + getsz(t->l) + getsz(t->r);
}
}
void apply_lazy(Node* t, ll v) {
if (!t) return;
t->key += v;
t->lz += v;
}
void push(Node* t) {
if (t && t->lz != 0) {
apply_lazy(t->l, t->lz);
apply_lazy(t->r, t->lz);
t->lz = 0;
}
}
pair<Node*, Node*> split(Node* t, ll key) {
if (!t) return {nullptr, nullptr};
push(t);
if (t->key < key) {
auto pr = split(t->r, key);
t->r = pr.first;
upd(t);
return {t, pr.second};
} else {
auto pr = split(t->l, key);
t->l = pr.second;
upd(t);
return {pr.first, t};
}
}
Node* merge(Node* a, Node* b) {
if (!a) return b;
if (!b) return a;
push(a); push(b);
if (a->pr < b->pr) {
a->r = merge(a->r, b);
upd(a);
return a;
} else {
b->l = merge(a, b->l);
upd(b);
return b;
}
}
int main() {
fast
int n;
if (!(cin >> n)) return 0;
vector<ll> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a.begin(), a.end());
Node* root = nullptr;
vector<Node*> stk;
for (int i = 0; i < n; i++) {
Node* cur = new Node(a[i], uniform_int_distribution<int>(INT_MIN, INT_MAX)(rng));
Node* last = nullptr;
while (!stk.empty() && stk.back()->pr > cur->pr) {
last = stk.back();
stk.pop_back();
}
cur->l = last;
if (!stk.empty()) {
stk.back()->r = cur;
}
stk.push_back(cur);
}
while (stk.size() > 1) stk.pop_back();
if (!stk.empty()) root = stk[0];
function<void(Node*)> dfs_upd = [&](Node* u) {
if (!u) return;
push(u);
dfs_upd(u->l);
dfs_upd(u->r);
upd(u);
};
dfs_upd(root);
int m;
cin >> m;
vector<ll> t(m);
for (int i = 0; i < m; i++) {
cin >> t[i];
}
for (int i = 0; i < m; i++) {
ll ti = t[i];
auto sp = split(root, ti);
Node* L = sp.first;
Node* R = sp.second;
ll cnt = getsz(R);
cout << cnt << "\n";
if (R) {
apply_lazy(R, -1);
}
root = merge(L, R);
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgdWxsIHVuc2lnbmVkIGxvbmcgbG9uZwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIGZhc3QgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKG51bGxwdHIpOwoKc3RydWN0IE5vZGUgewogICAgbGwga2V5OwogICAgaW50IHByOwogICAgaW50IHN6OwogICAgbGwgbHo7CiAgICBOb2RlICpsLCAqcjsKICAgIE5vZGUobGwgX2tleSwgaW50IF9wcik6IGtleShfa2V5KSwgcHIoX3ByKSwgc3ooMSksIGx6KDApLCBsKG51bGxwdHIpLCByKG51bGxwdHIpIHt9Cn07CgptdDE5OTM3IHJuZyhjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCkudGltZV9zaW5jZV9lcG9jaCgpLmNvdW50KCkpOwoKaW50IGdldHN6KE5vZGUqIHQpIHsKICAgIHJldHVybiB0ID8gdC0+c3ogOiAwOwp9Cgp2b2lkIHVwZChOb2RlKiB0KSB7CiAgICBpZiAodCkgewogICAgICAgIHQtPnN6ID0gMSArIGdldHN6KHQtPmwpICsgZ2V0c3oodC0+cik7CiAgICB9Cn0KCnZvaWQgYXBwbHlfbGF6eShOb2RlKiB0LCBsbCB2KSB7CiAgICBpZiAoIXQpIHJldHVybjsKICAgIHQtPmtleSArPSB2OwogICAgdC0+bHogKz0gdjsKfQoKdm9pZCBwdXNoKE5vZGUqIHQpIHsKICAgIGlmICh0ICYmIHQtPmx6ICE9IDApIHsKICAgICAgICBhcHBseV9sYXp5KHQtPmwsIHQtPmx6KTsKICAgICAgICBhcHBseV9sYXp5KHQtPnIsIHQtPmx6KTsKICAgICAgICB0LT5seiA9IDA7CiAgICB9Cn0KCnBhaXI8Tm9kZSosIE5vZGUqPiBzcGxpdChOb2RlKiB0LCBsbCBrZXkpIHsKICAgIGlmICghdCkgcmV0dXJuIHtudWxscHRyLCBudWxscHRyfTsKICAgIHB1c2godCk7CiAgICBpZiAodC0+a2V5IDwga2V5KSB7CiAgICAgICAgYXV0byBwciA9IHNwbGl0KHQtPnIsIGtleSk7CiAgICAgICAgdC0+ciA9IHByLmZpcnN0OwogICAgICAgIHVwZCh0KTsKICAgICAgICByZXR1cm4ge3QsIHByLnNlY29uZH07CiAgICB9IGVsc2UgewogICAgICAgIGF1dG8gcHIgPSBzcGxpdCh0LT5sLCBrZXkpOwogICAgICAgIHQtPmwgPSBwci5zZWNvbmQ7CiAgICAgICAgdXBkKHQpOwogICAgICAgIHJldHVybiB7cHIuZmlyc3QsIHR9OwogICAgfQp9CgpOb2RlKiBtZXJnZShOb2RlKiBhLCBOb2RlKiBiKSB7CiAgICBpZiAoIWEpIHJldHVybiBiOwogICAgaWYgKCFiKSByZXR1cm4gYTsKICAgIHB1c2goYSk7IHB1c2goYik7CiAgICBpZiAoYS0+cHIgPCBiLT5wcikgewogICAgICAgIGEtPnIgPSBtZXJnZShhLT5yLCBiKTsKICAgICAgICB1cGQoYSk7CiAgICAgICAgcmV0dXJuIGE7CiAgICB9IGVsc2UgewogICAgICAgIGItPmwgPSBtZXJnZShhLCBiLT5sKTsKICAgICAgICB1cGQoYik7CiAgICAgICAgcmV0dXJuIGI7CiAgICB9Cn0KCmludCBtYWluKCkgewogICAgZmFzdAogICAgaW50IG47CiAgICBpZiAoIShjaW4gPj4gbikpIHJldHVybiAwOwogICAgdmVjdG9yPGxsPiBhKG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gYVtpXTsKICAgIH0KICAgIHNvcnQoYS5iZWdpbigpLCBhLmVuZCgpKTsKICAgIE5vZGUqIHJvb3QgPSBudWxscHRyOwogICAgdmVjdG9yPE5vZGUqPiBzdGs7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIE5vZGUqIGN1ciA9IG5ldyBOb2RlKGFbaV0sIHVuaWZvcm1faW50X2Rpc3RyaWJ1dGlvbjxpbnQ+KElOVF9NSU4sIElOVF9NQVgpKHJuZykpOwogICAgICAgIE5vZGUqIGxhc3QgPSBudWxscHRyOwogICAgICAgIHdoaWxlICghc3RrLmVtcHR5KCkgJiYgc3RrLmJhY2soKS0+cHIgPiBjdXItPnByKSB7CiAgICAgICAgICAgIGxhc3QgPSBzdGsuYmFjaygpOwogICAgICAgICAgICBzdGsucG9wX2JhY2soKTsKICAgICAgICB9CiAgICAgICAgY3VyLT5sID0gbGFzdDsKICAgICAgICBpZiAoIXN0ay5lbXB0eSgpKSB7CiAgICAgICAgICAgIHN0ay5iYWNrKCktPnIgPSBjdXI7CiAgICAgICAgfQogICAgICAgIHN0ay5wdXNoX2JhY2soY3VyKTsKICAgIH0KICAgIHdoaWxlIChzdGsuc2l6ZSgpID4gMSkgc3RrLnBvcF9iYWNrKCk7CiAgICBpZiAoIXN0ay5lbXB0eSgpKSByb290ID0gc3RrWzBdOwogICAgZnVuY3Rpb248dm9pZChOb2RlKik+IGRmc191cGQgPSBbJl0oTm9kZSogdSkgewogICAgICAgIGlmICghdSkgcmV0dXJuOwogICAgICAgIHB1c2godSk7CiAgICAgICAgZGZzX3VwZCh1LT5sKTsKICAgICAgICBkZnNfdXBkKHUtPnIpOwogICAgICAgIHVwZCh1KTsKICAgIH07CiAgICBkZnNfdXBkKHJvb3QpOwoKICAgIGludCBtOwogICAgY2luID4+IG07CiAgICB2ZWN0b3I8bGw+IHQobSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG07IGkrKykgewogICAgICAgIGNpbiA+PiB0W2ldOwogICAgfQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtOyBpKyspIHsKICAgICAgICBsbCB0aSA9IHRbaV07CiAgICAgICAgYXV0byBzcCA9IHNwbGl0KHJvb3QsIHRpKTsKICAgICAgICBOb2RlKiBMID0gc3AuZmlyc3Q7CiAgICAgICAgTm9kZSogUiA9IHNwLnNlY29uZDsKICAgICAgICBsbCBjbnQgPSBnZXRzeihSKTsKICAgICAgICBjb3V0IDw8IGNudCA8PCAiXG4iOwogICAgICAgIGlmIChSKSB7CiAgICAgICAgICAgIGFwcGx5X2xhenkoUiwgLTEpOwogICAgICAgIH0KICAgICAgICByb290ID0gbWVyZ2UoTCwgUik7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=