// 线段树模板 区间加
void solve()
{
int n;
cin >> n;
vector<int> a(n + 1);
for (int i = 1; i <= n; i++) cin >> a[i];
auto b = a;
std::sort(b.begin(), b.end());
SegTree seg(n);
for (int i = 1; i <= n; i++)
{
int x = b.end() - std::upper_bound(b.begin(), b.end(), a[i]);
seg.modify(1, 1, n, i, Info(x));
// cout << x << " \n"[i == n];
}
vector<PII > c(n + 1);
for (int i = 1; i <= n; i++) c[i] = {a[i], i};
std::sort(c.begin() + 1, c.end());
int q;
cin >> q;
vector<PII > ask(q);
for (int i = 0; i < q; i++)
{
int x;
cin >> x, ask[i] = {x, i};
}
ranges::sort(ask, greater());
vector<int> ans(q);
for (auto [x, id]: ask)
{
while (c.size() and c.back().first > x)
{
int i = c.back().second;
if (i != n) seg.rangeApply(1, 1, n, i + 1, n, Tag(1));
c.pop_back();
}
ans[id] = seg.info[1].val;
}
for (int i = 0; i < q; i++) cout << ans[i] << "\n";
}