#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();
map<int,int> mp;
map<int,int> m;
for(int i=0; i<n; i++){
    mp[A[i]]++;
    m[A[i]]++;
}
vector<int> p(n);
int id=0;
set<int> s,cn;
for(int i =0; i<n; i++){
        if(cn.count(A[i])) continue;
    if(m[A[i]] > mp[A[i]]/2){
        p[id]=i;
        s.insert(i);
        m[A[i]]--;
        id++;
    }
else cn.insert(A[i]);
}
for(int i =0; i<n; i++){
    if(!s.count(i)) {
        s.insert(i);
        p[id]=i;
        id++;
    }
}
return p;
}