#include using namespace std; typedef long long ll; typedef pair pii; typedef pair pil; typedef pair pli; typedef pairpll; const ll MOD = 1e9 + 7; const int MAXN = 1e5; ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); } ll lcm(ll a, ll b) { return a / gcd(a, b) * b; } ll pow(ll a, ll b) { ll res = 1; while (b) { if (b & 1) res = res * a % MOD; a = a * a % MOD; b >>= 1; } return res; } struct unionset { int size; vector fa; unionset(int _size = 0) { size = _size; fa.clear(); for (int i = 0; i < size; i++)fa.push_back(i); } int getfa(int x) { return fa[x] == x ? x : fa[x] = getfa(fa[x]); } bool merge(int a, int b) { int faa = getfa(a); int fbb = getfa(b); if (faa > fbb)swap(faa, fbb); if (faa != fbb) { fa[fbb] = faa; } } }; struct graph { struct edge { int v, nxt; int d; edge(int vv = 0, int dd = 0, int nn = 0) { v = vv; d = dd; nxt = nn; } }; static const int MAXN = 1e5; static const int MAXM = 1e6; vectorh; vectore; graph() { h.clear(); e.clear(); for (int i = 0; i < MAXN; i++) { h.push_back(-1); } } void addedge(int u, int v, int d = 0) { e.push_back(edge()); e[e.size() - 1].v = v; e[e.size() - 1].d = d; e[e.size() - 1].nxt = h[u]; h[u] = e.size() - 1; } }; int judge(ll a, ll b, ll c) { int ans = 0; while (a >= b) { a = a - b + ll(b * (1.0 - 1.0 * c / 100)); ans++; } return ans; } int main() { int T; cin >> T; while (T--) { int n; scanf("%d", &n); vectora; for (int i = 0; i < n; i++) { ll x; scanf("%lld", &x); a.push_back(x); } sort(a.begin(), a.end()); ll pre = a[0]; ll ans = 0; for (int i = 1; i < n; i++) { ans += a[i] * i - pre; pre += a[i]; } printf("%lld\n", ans); } }