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

using namespace std;

const long long inf = 1e18;

vector<int> solve(vector<int> A) {
//    vector<pair<int, int>> B;
//
//    long long s = 0;
//    for (int i = 0; i < (int)A.size(); ++i) {
//        B.push_back({A[i], i});
//        s += A[i];
//    }
//
//    sort(B.rbegin(), B.rend());
//
//    vector<int> C;
//
//    bool fl = 0;
//    long long tot = 0;
//    for (int i = 0; i < (int)B.size(); ++i) {
//        if (!fl) {
//            cout << A[B[i].second] << " ";
//            tot += A[B[i].second];
//        } else {
//            cout << A[B[i].second] << " ";
//        }
//        if ((s + 1) / 2 <= tot) {
//            fl = 1;
//        }
//        C.push_back(B[i].second);
//    }
//
//    cout << "\n";
//    cout << abs(2 * tot - s) << "\n";

//    long long s = 0;
//
//    int n = A.size();
//    for (int i = 0; i < n; ++i) {
//        s += A[i];
//    }
//
//    vector<int> a = A;
//    sort(a.begin(), a.end());
//
//    long long bval = inf;
//    vector<vector<int>> best;
//
//    do {
//        long long tot = 0, it = n;
//        for (int i = 0; i < a.size(); ++i) {
//            tot += a[i];
//            if ((s + 1) / 2 <= tot) {
//                it = i;
//                break;
//            }
//        }
//
//        long long cur = abs((it + 1) - (n - it + 1));
//        if (cur == bval) {
//            best.push_back(a);
//        } else {
//            bval = cur;
//            best.clear();
//            best.push_back(a);
//        }
//    } while (next_permutation(a.begin(), a.end()));
//
//
//    cout << bval << "\n";
//    for (auto& b: best) {
//        for (auto& x: b) {
//            cout << x << " ";
//        }
//        cout << "\n";
//    }

    long long s = 0;

    int n = A.size();
    for (int i = 0; i < n; ++i) {
        s += A[i];
    }

    vector<int> p(n);
    iota(p.begin(), p.end(), 0);

    long long bval = inf;
    vector<int> best;

    do {
        long long tot = 0, it = n;
        for (int i = 0; i < p.size(); ++i) {
            tot += A[p[i]];
            if ((s + 1) / 2 <= tot) {
                it = i;
                break;
            }
        }

        long long cur = abs((it + 1) - (n - it - 1));
        if (cur < bval) {
            bval = cur, best = p;
        }
    } while (next_permutation(p.begin(), p.end()));

    return best;
}
