#include <bits/stdc++.h>
using namespace std;
int main() {
  vector<int> neg, pos, zero;
  int temp, i, negn = 0, posn = 0, zeron = 0, countn, countp, countz, n;
  scanf("%d\n", &n);
  for (i = 0; i < n; ++i) {
    scanf("%d ", &temp);
    if (temp > 0) {
      posn++;
      pos.push_back(temp);
    } else if (temp < 0) {
      negn++;
      neg.push_back(temp);
    } else {
      zeron++;
      zero.push_back(temp);
    }
  }
  countn = 1;
  countz = 1;
  countp = 1;
  printf("%d ", countn);
  printf("%d", neg[0]);
  if (neg.size()) neg.erase(neg.begin());
  negn = (int)neg.size();
  printf("\n");
  if (posn == 0) {
    countp++;
    printf("%d ", countp);
    printf("%d %d", neg[0], neg[1]);
    neg.erase(neg.begin());
    neg.erase(neg.begin());
    negn = (int)neg.size();
    printf("\n");
  } else {
    printf("%d ", countp);
    printf("%d ", pos[0]);
    pos.erase(pos.begin());
    posn = (int)pos.size();
    printf("\n");
  }
  printf("%d ", zeron + posn + negn);
  for (i = 0; i < zeron; ++i) {
    printf("%d ", zero[i]);
  }
  for (i = 0; i < posn; ++i) {
    printf("%d ", pos[i]);
  }
  for (i = 0; i < negn; ++i) {
    printf("%d ", neg[i]);
  }
  return 0;
}
