#include <bits/stdc++.h>
#include "rotate.h"
using namespace std;
void energy(int n, vector<int> v) {
if (n <= 1) return;
sort(v.begin(), v.end());
vector<int> w = v;
w.insert(w.end(), v.begin(), v.end());
int best_shift = 0, best_diff = n;
int cnt = 0, j = 0;
for (int i = 0; i < n; ++i) {
while (j < i + n && w[j] - w[i] < 25000) ++j;
int cur = j - i;
int diff = abs(cur - n/2);
int shift = (50000 - w[i]) % 50000;
if (diff < best_diff) {
best_diff = diff;
best_shift = shift;
}
}
if (best_shift != 0) {
vector<int> all(n);
iota(all.begin(), all.end(), 0);
rotate(all, best_shift);
for (int &x : v) x = (x + best_shift) % 50000;
}
vector<int> target(n);
vector<pair<int, int>> order;
for (int i = 0; i < n; ++i) {
target[i] = (v[i] < 25000) ? 0 : 25000;
int dist = min(abs(v[i] - target[i]), 50000 - abs(v[i] - target[i]));
order.emplace_back(dist, i);
}
sort(order.rbegin(), order.rend());
for (auto [dist, i] : order) {
int move = (target[i] - v[i] + 50000) % 50000;
if (move != 0) {
rotate({i}, move);
v[i] = target[i];
}
}
}