#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<ll> x(n);
for (int i = 0; i < n; i++) {
cin >> x[i];
}
// Pair each value with its original index, then sort by value
vector<pair<ll,int>> v(n);
for (int i = 0; i < n; i++) {
v[i] = { x[i], i };
}
sort(v.begin(), v.end());
// Build prefix sums of the sorted values
vector<ll> pref(n+1, 0);
for (int i = 0; i < n; i++) {
pref[i+1] = pref[i] + v[i].first;
}
ll total = pref[n];
// Compute answer for each sorted position
// sum_j |v[i].first - v[j].first|
// = v[i].first * i - pref[i]
// + (total - pref[i+1]) - v[i].first * (n - i - 1)
// Then add +n for the “+1” per segment.
vector<ll> ans(n);
for (int i = 0; i < n; i++) {
ll xi = v[i].first;
ll left_cost = xi * i - pref[i];
ll right_cost = (total - pref[i+1]) - xi * (n - i - 1);
ll sum_abs = left_cost + right_cost;
ans[v[i].second] = sum_abs + n;
}
// Output in original order
for (int i = 0; i < n; i++) {
cout << ans[i] << (i+1<n ? ' ' : '\n');
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKaW50IG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBpbnQgbjsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICB2ZWN0b3I8bGw+IHgobik7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgY2luID4+IHhbaV07CiAgICAgICAgfQoKICAgICAgICAvLyBQYWlyIGVhY2ggdmFsdWUgd2l0aCBpdHMgb3JpZ2luYWwgaW5kZXgsIHRoZW4gc29ydCBieSB2YWx1ZQogICAgICAgIHZlY3RvcjxwYWlyPGxsLGludD4+IHYobik7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgdltpXSA9IHsgeFtpXSwgaSB9OwogICAgICAgIH0KICAgICAgICBzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSk7CgogICAgICAgIC8vIEJ1aWxkIHByZWZpeCBzdW1zIG9mIHRoZSBzb3J0ZWQgdmFsdWVzCiAgICAgICAgdmVjdG9yPGxsPiBwcmVmKG4rMSwgMCk7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgcHJlZltpKzFdID0gcHJlZltpXSArIHZbaV0uZmlyc3Q7CiAgICAgICAgfQogICAgICAgIGxsIHRvdGFsID0gcHJlZltuXTsKCiAgICAgICAgLy8gQ29tcHV0ZSBhbnN3ZXIgZm9yIGVhY2ggc29ydGVkIHBvc2l0aW9uCiAgICAgICAgLy8gc3VtX2ogfHZbaV0uZmlyc3QgLSB2W2pdLmZpcnN0fAogICAgICAgIC8vICAgPSB2W2ldLmZpcnN0ICogaSAgIC0gcHJlZltpXQogICAgICAgIC8vICAgKyAodG90YWwgLSBwcmVmW2krMV0pIC0gdltpXS5maXJzdCAqIChuIC0gaSAtIDEpCiAgICAgICAgLy8gVGhlbiBhZGQgK24gZm9yIHRoZSDigJwrMeKAnSBwZXIgc2VnbWVudC4KICAgICAgICB2ZWN0b3I8bGw+IGFucyhuKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBsbCB4aSA9IHZbaV0uZmlyc3Q7CiAgICAgICAgICAgIGxsIGxlZnRfY29zdCAgPSB4aSAqIGkgLSBwcmVmW2ldOwogICAgICAgICAgICBsbCByaWdodF9jb3N0ID0gKHRvdGFsIC0gcHJlZltpKzFdKSAtIHhpICogKG4gLSBpIC0gMSk7CiAgICAgICAgICAgIGxsIHN1bV9hYnMgPSBsZWZ0X2Nvc3QgKyByaWdodF9jb3N0OwogICAgICAgICAgICBhbnNbdltpXS5zZWNvbmRdID0gc3VtX2FicyArIG47CiAgICAgICAgfQoKICAgICAgICAvLyBPdXRwdXQgaW4gb3JpZ2luYWwgb3JkZXIKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBjb3V0IDw8IGFuc1tpXSA8PCAoaSsxPG4gPyAnICcgOiAnXG4nKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K