#include <bits/stdc++.h>
using namespace std;
map<int, int> has;
map<int, vector<int> > lst;
set<int> st;
int main() {
  int N;
  scanf("%d", &N);
  int cnt = 0;
  for (int i = 0; i < N; i++) {
    int x;
    scanf("%d", &x);
    set<int>::iterator it = st.lower_bound(x);
    if (it == st.begin()) {
      cnt++;
      has[x] = cnt;
      lst[cnt].push_back(x);
      st.insert(x);
    } else {
      it--;
      int y = *it;
      int c = has[y];
      has[x] = c;
      lst[c].push_back(x);
      st.erase(it);
      st.insert(x);
    }
  }
  map<int, vector<int> >::iterator it;
  for (it = lst.begin(); it != lst.end(); it++) {
    vector<int> res = it->second;
    for (int i = 0; i < res.size(); i++) {
      printf("%d ", res[i]);
    }
    printf("\n");
  }
  return 0;
}
