#include using namespace std; using ll = long long; //引数unzipには圧縮前のvectorを入れる int compress(vector& unzip, map& zip) { sort(unzip.begin(), unzip.end()); unzip.erase(unique(unzip.begin(), unzip.end()), unzip.end()); for (int i = 0; i < unzip.size(); i++) { zip[unzip[i]] = i; } return unzip.size(); } //1-indexであることに注意 template struct BIT { int n; vector data; BIT(int n) : n(n), data(n + 1, 0) {} T sum(int i) { T s = 0; while (i > 0) { s += data[i]; i -= i & -i; } return s; } void add(int i, T x) { while (i <= n) { data[i] += x; i += i & -i; } } }; int main() { cin.tie(0); ios::sync_with_stdio(false); int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) cin >> a[i]; vector unzip(a); map zip; compress(unzip, zip); ll ans = 0; BIT b(unzip.size()); for (int i = 0; i < n; i++) { ans += i - b.sum(zip[a[i]] + 1); b.add((zip[a[i]] + 1), 1); } cout << ans << "\n"; for (int i = 0; i < n - 1; i++) { ans -= b.sum(zip[a[i]]); ans += n - b.sum(zip[a[i]] + 1); cout << ans << "\n"; } return 0; }