#pragma GCC optimize("unroll_loops")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
vector<int> solve(std::vector<int> A){
ll n =A.size();
ll gsum=0;
map<int,int> mp;
map<int,int> m;
for(int i=0; i<n; i++){
    gsum+=A[i];
    mp[A[i]]++;
    m[A[i]]++;
}
ll sum=0;
vector<int> p(n);
int id=0;
set<int> s;
for(int i =0; i<n; i++){
    if(sum>=gsum/2){
        break;
    }
    if(m[A[i]] > mp[A[i]]/2){
        sum+=A[i];
        p[id]=i;
        s.insert(i);
        m[A[i]]--;
        id++;
    }
}
for(int i =0; i<n; i++){
    if(!s.count(i)) {
        s.insert(i);
        p[id]=i;
        id++;
    }
}
return p;
}