#include <bits/stdc++.h>
using namespace std;
const int INF = (int)1E9;
const long long LINF = (long long)1E18;
int INP, AM;
char BUF[(1 << 10) + 1], *inp = BUF;
template <typename T>
T gcd(T a, T b) {
  return (b == 0) ? abs(a) : gcd(b, a % b);
}
template <typename T>
inline T lcm(T a, T b) {
  return a / gcd(a, b) * b;
}
template <typename T>
inline T sqr(T x) {
  return x * x;
}
const char DEBUG_PARAM[] = "__LOCAL_TESTING";
const char IN[] = "input.txt";
const char OUT[] = "output.txt";
int ntest = 0, test;
inline void init();
inline void run();
inline void stop() { ntest = test - 1; }
int main(int argc, char* argv[]) {
  if (argc > 1 && strcmp(argv[1], DEBUG_PARAM) == 0) {
    freopen(IN, "r", stdin);
  }
  init();
  if (ntest == 0) {
    puts("ntest = ?");
    return 0;
  }
  for (test = 1; test <= ntest; test++) {
    run();
  }
  return 0;
}
const int dx[] = {-1, 0, 0, 1};
const int dy[] = {0, -1, 1, 0};
const long double EPS = 1E-9;
const long long MODULO = 1000000007LL;
inline void init() { ntest = 1; }
const int maxn = 100000 + 5;
pair<int, int> p[maxn];
int n;
vector<int> X, Y;
int sumX, sumY;
void solve() {
  int limit = ceil((double)n / 2);
  for (int i = (n); i >= (1); i--) {
    if (((int)(X).size()) == limit) {
      Y.push_back(p[i].second);
      sumY += p[i].first;
    } else if (((int)(Y).size()) == limit) {
      X.push_back(p[i].second);
      sumX += p[i].first;
    } else {
      if (sumX < sumY) {
        X.push_back(p[i].second);
        sumX += p[i].first;
      } else {
        Y.push_back(p[i].second);
        sumY += p[i].first;
      }
    }
  }
  cout << ((int)(X).size()) << endl;
  for (int i = 0; i < (((int)(X).size())); i++) {
    cout << X[i];
    if (i != ((int)(X).size()) - 1) cout << " ";
  }
  cout << endl;
  cout << ((int)(Y).size()) << endl;
  for (int i = 0; i < (((int)(Y).size())); i++) {
    cout << Y[i];
    if (i != ((int)(Y).size()) - 1) cout << " ";
  }
}
inline void run() {
  cin >> n;
  for (int i = (1); i <= (n); i++) {
    cin >> p[i].first;
    p[i].second = i;
  }
  sort(p + 1, p + 1 + n);
  solve();
}
