#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <vector>
int fv2[100000+1],a[100000+1],indici[100000+1];
void myqsort(int begin,int end){
    int b=begin,e=end,piv=a[(b+e)/2],aux;
    while(a[b]<piv){
        b++;
    }
    while(a[e]>piv){
        e--;
    }
    while(b<e){
        aux=a[b];
        a[b]=a[e];
        a[e]=aux;
        aux=indici[b];
        indici[b]=indici[e];
        indici[e]=aux;
        b++;
        while(a[b]<piv){
            b++;
        }
        e--;
        while(a[e]>piv){
            e--;
        }
    }
    if(begin<e){
        myqsort(begin,e);
    }
    if(e+1<end){
        myqsort(e+1,end);
    }
}
using namespace std;
std::vector<int> solve(std::vector<int> A){
    std::vector<int> ret;
    int i,n=A.size(),cnt,j;
    for(i=0 ; i<n ; i++){
        a[i]=A[i];
        indici[i]=i;
    }
    cnt=1;
    myqsort(0,n-1);
    for(i=1 ; i<n ; i++){
        if(a[i]==a[i-1]){
            cnt++;
        }else{
            for(j=i-cnt ; j<i-(cnt/2) ; j++){
                ret.push_back(indici[j]);
                fv2[j]=1;
            }
            cnt=1;
        }
    }
    for(j=i-cnt ; j<i-(cnt/2) ; j++){
        ret.push_back(indici[j]);
        fv2[j]=1;
    }
    for(i=0 ; i<n ; i++){
        if(fv2[i]==0){
            ret.push_back(indici[i]);
        }
    }
    return (ret);
}