#include <bits/stdc++.h>
using namespace std;
vector <int> res,niz;
long long N,k;

struct kes{
    int ind;
    long long val,s;
};
bool cmp(kes A, kes B){
    return A.val<B.val;
}
bool vrati(kes A, kes B){
    return A.ind<B.ind;
}

kes a[2000007];

int dir[10000045],br[2000023];
void skal(){
    int p=0;
    for(int i=0;i<N;i++){
        if(a[i].val!=a[i-1].val){
            p++;
            a[i].s=p;
        }
        else{
            a[i].s=p;
        }
    }
    return;
}


vector<int> solve(vector<int> A){
    N=A.size();
    skal();
    for(int i=0;i<N;i++){
        a[i].val=A[i];
        a[i].ind=i;
    }
    sort(a,a+N,cmp);
    skal();
    for(int i=0;i<N;i++){
        dir[a[i].s]++;
    }

    for(int i=0;i<N;i++){
        if(dir[a[i].s]>(br[a[i].s]*2)){
            res.push_back(i);
            br[a[i].s]++;
        }
    }
    for(int i=N-1;i>=0;i--){
        if(br[a[i].s]<dir[a[i].s]){
            res.push_back(i);
            br[a[i].s]++;
        }
    }


    return res;
}