#include <bits/stdc++.h>
using namespace std;
int N, K, T1, T2, T3;
vector<int> D1, D2, D3;
int main() {
  scanf("%d", &N);
  for (int(i) = 0; (i) < (N); (i)++) {
    scanf("%d", &K);
    if (K < 0) D1.push_back(K);
    if (K > 0) D2.push_back(K);
    if (K == 0) D3.push_back(K);
  }
  if (D2.size() == 0) {
    int n = D1.size();
    D2.push_back(D1[n - 2]);
    D2.push_back(D1[n - 1]);
    D1.pop_back();
    D1.pop_back();
  }
  if (D1.size() % 2 == 0) {
    D3.push_back(D1.back());
    D1.pop_back();
  }
  printf("%d", D1.size());
  for (int(i) = 0; (i) < (D1.size()); (i)++) printf(" %d", D1[i]);
  putchar('\n');
  printf("%d", D2.size());
  for (int(i) = 0; (i) < (D2.size()); (i)++) printf(" %d", D2[i]);
  putchar('\n');
  printf("%d", D3.size());
  for (int(i) = 0; (i) < (D3.size()); (i)++) printf(" %d", D3[i]);
  putchar('\n');
}
