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

using namespace std;

typedef long long ll;

#ifndef GIGO_DEBUG
#define cerr if(false)cerr
#endif // GIGO_DEBUG

vector<int> solve(vector<int> a) {
    int n = a.size();

//    vector<pair<int, int>> pi;
//    for(int i = 0; i < n; i++){
//        pi.push_back({a[i], i});
//    }
//    sort(pi.begin(), pi.end());

/*
    sum = 2^n-1
    target = 2^(n-1) - 1
*/

//    vector<int> ret;
//    for(int i = 0; i < n/2; i++){
//        ret.push_back(n-1-i);
//        ret.push_back(i);
//    }
//    if(n%2 == 1){ ret.push_back(n/2); }

    vector<int> ret;
    for(int i = 0; i < n; i++){
        ret.push_back(i);
    }

    return ret;

    /// takava podredba, taka che sumata da minava s/2 nqkude okolo sredata
    /// nqkva shantava ranica??, pickvame n/2 ot n, max capacitet s/2

//    vector<vector<int>> dp(n);
//    for(int i = 0; i < n; i++){
//        dp[i] = vector<int>(n+2);
//    }
//    for(int i = 0; i < n; i++){
//        dp[]
//    }
//
//
//    return {};

//    vector<vector<int>> dp(n); /// dp[do #][s # kutijki] = naj-dobra razlika
//    for(int i = 0; i < n; i++){
//        dp[i] = vector<int>(n+2);
//    }
//
//    vector<bool> take(n);
//    dp[0][0] = -a[0];
//    dp[0][1] = a[0];
//    for(int i = 1; i < n; i++){
//        dp[i][0] = dp[i-1][0] - a[i];
//        for(int j = 1; j <= i+1; j++){
//            int take = dp[i-1][j-1]+a[i];
//            int dontTake = dp[i-1][j]-a[i];
//            bool doITake = (abs(take) <= abs(dontTake));
//            dp[i][j] = doITake?take:dontTake;
//            cerr << "i: " << i << ", j: " << j << ", take: " << doITake << ", dp: " << dp[i][j] << '\n';;
//        }
//    }
}
