#include <bits/stdc++.h>
using namespace std;
int main() {
  int N;
  cin >> N;
  vector<int> v(N);
  for (int i = 0; i < N; ++i) cin >> v[i];
  sort(v.begin(), v.end());
  int neg = 0;
  int zeroes = 0;
  int pos = 0;
  for (int i = 0; i < v.size(); ++i) {
    if (v[i] > 0) pos++;
    if (v[i] == 0) zeroes++;
    if (v[i] < 0) neg++;
  }
  if (pos > 0 && neg % 2 == 1) {
    cout << neg << " ";
    for (int i = 0; i < neg; ++i) cout << v[i] << " ";
    cout << endl;
    cout << pos << " ";
    for (int i = 0; i < pos; ++i) cout << v[i + neg + zeroes] << " ";
    cout << endl;
    cout << zeroes << " ";
    for (int i = 0; i < zeroes; ++i) cout << 0 << " ";
  }
  if (pos > 0 && neg % 2 == 0) {
    cout << neg - 1 << " ";
    for (int i = 0; i < neg - 1; ++i) cout << v[i] << " ";
    cout << endl;
    cout << pos << " ";
    for (int i = 0; i < pos; ++i) cout << v[i + neg + zeroes] << " ";
    cout << endl;
    cout << zeroes + 1 << " " << v[neg - 1] << " ";
    for (int i = 0; i < zeroes; ++i) cout << 0 << " " << endl;
  }
  if (pos == 0 && neg % 2 == 0) {
    cout << neg - 3 << " ";
    for (int i = 0; i < neg - 3; ++i) cout << v[i] << " ";
    cout << endl;
    cout << 2 << " ";
    cout << v[neg - 1] << " " << v[neg - 2];
    cout << endl;
    cout << zeroes + 1 << " " << v[neg - 3] << " ";
    for (int i = 0; i < zeroes; ++i) cout << 0 << " " << endl;
  }
  if (pos == 0 && neg % 2 == 1) {
    cout << neg - 2 << " ";
    for (int i = 0; i < neg - 2; ++i) cout << v[i] << " ";
    cout << endl;
    cout << 2 << " ";
    cout << v[neg - 1] << " " << v[neg - 2];
    cout << endl;
    cout << zeroes << " ";
    for (int i = 0; i < zeroes; ++i) cout << 0 << " " << endl;
  }
  return 0;
}
