#include <bits/stdc++.h>
const int MOD = 1e9 + 7;
const int MAXN = 1e9 + 1;
const long long MAXL = 1e15;
const double PI = 3.14159265359;
using namespace std;
pair<int, int> a[30001];
vector<pair<int, int> > x, y;
vector<char> ok(300001);
int n;
void func() {
  for (int i = 0; i < x.size(); ++i) {
    cout << x[i].first << " ";
  }
  cout << endl;
  for (int i = 0; i < y.size(); ++i) {
    cout << y[i].first << " ";
  }
}
bool check(int a1, int a2) {
  int q = a[a2].first - a[a1].first;
  x.push_back(make_pair(a[a1].first, a1));
  x.push_back(make_pair(a[a2].first, a2));
  ok[a1] = ok[a2] = 1;
  for (int i = 1; i <= n; ++i) {
    if (a[i].first - x[x.size() - 1].first == q && i != a1 && i != a2) {
      x.push_back(make_pair(a[i].first, i));
      a[i].second = x.size() - 1;
      ok[i] = 1;
    }
  }
  for (int i = 1; i <= n; ++i) {
    if (!ok[i]) {
      y.push_back(make_pair(a[i].first, i));
      a[i].second = y.size() - 1;
    }
  }
  set<int> st;
  for (int i = 1; i < y.size(); ++i) {
    st.insert(y[i].first - y[i - 1].first);
  }
  if (st.size() == 1) {
    return 1;
  }
  if (st.size() == 2) {
    int z = y[1].first - y[0].first, w, c = 0, cc = 0, c1, c2, idx;
    for (int i = 2; i < y.size(); ++i) {
      if (y[i].first - y[i - 1].first != z) {
        w = y[i].first - y[i - 1].first;
        c2 = y[i].second;
        c1 = y[i - 1].second;
        idx = i;
        ++c;
      } else {
        ++cc;
      }
    }
    if (c == 1) {
      int cur = x[x.size() - 1].first;
      if (y[idx].first - cur == z) {
        pair<int, int> now = y[y.size() - 1];
        y.push_back(now);
        for (int i = y.size() - 1; i > idx; --i) {
          y[i] = y[i - 1];
        }
        y[idx] = make_pair(cur, 1);
        x.erase(x.end());
        if (cc == 0) {
          int d1 = y[1].first - y[0].first;
          int d2 = y[2].first - y[1].first;
          if (d1 != d2) {
            swap(y[1], y[2]);
          }
        }
        return 1;
      } else {
        return 0;
      }
    }
    return 0;
  }
  return 0;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  cin >> n;
  for (int i = 1; i <= n; ++i) {
    cin >> a[i].first;
  }
  if (n == 2) {
    cout << a[1].first << endl << a[2].first;
    return 0;
  }
  if (n == 3) {
    cout << a[1].first << " " << a[2].first << endl << a[3].first;
    return 0;
  }
  if (check(2, 3)) {
    func();
  } else {
    x.clear();
    y.clear();
    ok.clear();
    ok.resize(30001);
    if (check(1, 3)) {
      func();
    } else {
      x.clear();
      y.clear();
      ok.clear();
      ok.resize(30001);
      if (check(1, 2)) {
        func();
      } else {
        cout << "No solution";
      }
    }
  }
  return 0;
}
