void solve(){
int N; cin >> N;
map<int, int> mp;
int ans = 0;
rep(i, 0, N){
int x; cin >> x;
mp[x]++;
ans += x;
}
int mxIdx = -1, mxVal = -1;
for(auto [k, v]: mp){
if(k*v > mxVal){
mxVal = k*v;
mxIdx = k;
}
}
ans += mxVal;
vector<int> v1, v2;
for(auto [k, v]: mp){
if(k < mxIdx) rep(i, 0, v) v1.push_back(k);
else if(k > mxIdx) rep(i, 0, v) v2.push_back(k);
}
rrep(i, 0, v2.size()) v1.push_back(v2[i]);
rep(i, 0, mp[mxIdx]) v1.push_back(mxIdx);
cout << ans << '\n';
for(auto x: v1) cout << x << ' ';
}