#include <vector>
const int N = 1 << 24;
std::vector<int> v[N];
int tree[N];
void count_2d(int n, const unsigned int * x, const unsigned int * y, unsigned int * out) {
for (int i = 0; i < n; ++i) {
v[x[i]].push_back(i);
}
for (int i = 0; i < n; ++i) {
for (auto & j : v[i]) {
int answer = 0;
for (int k = y[j]; k > 0; k = k - (k & -k)) {
answer = answer + tree[k];
}
out[j] = answer;
}
for (auto & j : v[i]) {
for (int k = y[j] + 1; k < n; k = k + (k & -k)) {
tree[k] = tree[k] + 1;
}
}
}
}