#include <bits/stdc++.h>
int main() {
  void paixu(int x[102], int y);
  int i, a[102], n, j, k, h;
  while (scanf("%d", &n) != EOF) {
    j = 0;
    k = 0;
    h = 0;
    for (i = 0; i < n; i++) {
      scanf("%d", &a[i]);
      if (a[i] > a[i - 1] && a[i] == 1 && i > 0) h = i + 1;
      if (a[i] == 0)
        k = k + 1;
      else if (a[i] < 0)
        j = j + 1;
    }
    paixu(a, n);
    printf("1 %d\n", a[0]);
    if ((j - 1) % 2 == 0) {
      printf("%d", n - 1 - k);
      for (i = 1; i < n; i++) {
        if (a[i] != 0) printf(" %d", a[i]);
      }
      printf("\n%d", k);
      for (i = 0; i < k; i++) printf(" 0");
      printf("\n");
    } else {
      printf("%d", n - 2 - k);
      for (i = 2; i < n; i++) {
        if (a[i] != 0) printf(" %d", a[i]);
      }
      printf("\n%d %d", k + 1, a[1]);
      for (i = 0; i < k; i++) printf(" 0");
      printf("\n");
    }
  }
  return 0;
}
void paixu(int x[102], int y) {
  int i = 0, n, t;
  for (i = 0; i < y - 1; i++) {
    for (n = i + 1; n < y; n++) {
      if (x[i] > x[n]) {
        t = x[i];
        x[i] = x[n];
        x[n] = t;
      }
    }
  }
}
