#include "partition.h"
#include <bits/stdc++.h>

using namespace std;;
long long s,h;
int c[30];
long long n,a[2000001];
vector<int> v[30];
int u[2000001];
map<int,int> mp;
std::vector<int> solve(std::vector<int> A)
{
    for(int i=0;i<=25;i++)
        mp[(1<<i)]=i;
    n=A.size();

    for(int i=0;i<=25;i++)
        c[i]=0, v[i].clear();

    for(int i=0;i<n;i++)
    {
        c[mp[A[i]]]++;
    }

    int hey=0;
    vector<pair<int,int> > h;
    for(int i=0;i<n;i++)
    {
        int p=mp[A[i]];

        if(c[p]%2==1)
        {
            h.push_back({p,i});
            c[p]--;
            hey++;
        }
        else
        {
            v[p].push_back(i);
        }
    }


    vector<int> g;
    for(int i=0;i<=25;i++)
    {
        for(int j=0;j<v[i].size()/2;j++)
        {
            g.push_back(v[i][j]);
        }
    }


    sort(h.begin(),h.end());
    int need=h.size()/2;
    for(int i=need;i<h.size();i++)
        g.push_back(h[i].second);

    for(int i=0;i<n;i++)
        u[i]=0;

    for(int i=0;i<g.size();i++)
        u[g[i]]=1;
    for(int i=0;i<n;i++)
    {
        if(!u[i])
            g.push_back(i);
    }

    return g;
}
