#include <bits/stdc++.h>
#define ss second
#define ff first
#define en end
#define be begin
#define ve vector
#define pb push_back
#define ppb pop_back
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
int v[2000000];
ve<int>st[100000];
ve<int>p;
void sortt(int n){
    for (int i=0; i<n; i++){
        st[v[i]%100000].pb(i);
    }
    ve<int>r;
    for (int i=0; i<100000; i++){
        for (auto g:st[i])
            r.pb(g);
        st[i].clear();
    }
    for (int i=0; i<n; i++){
        st[v[r[i]]/100000].pb(r[i]);
    }
    for (int i=0; i<20000; i++){
        for (auto g:st[i]){
            p.pb(g);
        }
        st[i].clear();
    }
}
ve<int> solve(ve<int>a){
    int  n=a.size();
    p.clear();
    ve<pair<int ,int >>c,d;
    long long sm=0;
    for (int  i=0; i<n; i++){
        v[i]=a[i];
        sm+=a[i];
    }
    sortt(n);
    sm=(sm+1)/2;
    for (int  i=0; i<n; i++){
      //  cout<<a[p[i]]<<" "<<p[i]<<endl;
        if (i%2==0) c.pb({a[p[i]],p[i]});
        else d.pb({a[p[i]],p[i]});
    }
    long long  q=0;
    for (int  i=0; i<c.size(); i++){
        q+=c[i].ff;
    }
    ve<int>e;
    if (q<=(sm)){
        for (auto g:d)
            e.pb(g.ss);
        for (auto g:c)
            e.pb(g.ss);

    }
    else {
        for (auto g:c)
            e.pb(g.ss);
        for (auto g:d)
            e.pb(g.ss);
    }
    return e;
}