#include <bits/stdc++.h>
using namespace std;
vector<int> a, h1, h2;
int main() {
  int n, inp, m, d1, d2, c = 0;
  bool error = 1, b = 0;
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> inp;
    a.push_back(inp);
  }
  for (int r1 = 0; r1 < 2; r1++) {
    for (int r2 = r1 + 1; r2 < 3; r2++) {
      if (error == 0) break;
      d1 = a[r2] - a[r1];
      error = 0;
      h1.clear();
      h2.clear();
      h1.push_back(a[r1]);
      h1.push_back(a[r2]);
      for (int i = 0; i < n; i++) {
        if (i == r1 || i == r2) continue;
        if (h2.size() == 2) d2 = h2[1] - h2[0];
        if (a[i] - *(h1.end() - 1) == d1)
          h1.push_back(a[i]);
        else if (h2.size() < 2 || a[i] - *(h2.end() - 1) == d2)
          h2.push_back(a[i]);
        else {
          error = 1;
          break;
        }
      }
      if (error == 0) break;
    }
  }
  if (error) {
    b = 1;
    for (int r1 = 0; r1 < 2; r1++) {
      for (int r2 = r1 + 1; r2 < 3; r2++) {
        if (error == 0) break;
        d1 = a[n - 1 - r2] - a[n - 1 - r1];
        error = 0;
        h1.clear();
        h2.clear();
        h1.push_back(a[n - 1 - r1]);
        h1.push_back(a[n - 1 - r2]);
        for (int i = n - 1; i >= 0; i--) {
          if (i == n - 1 - r1 || i == n - 1 - r2) continue;
          if (h2.size() == 2) d2 = h2[1] - h2[0];
          if (a[i] - *(h1.end() - 1) == d1)
            h1.push_back(a[i]);
          else if (h2.size() < 2 || a[i] - *(h2.end() - 1) == d2)
            h2.push_back(a[i]);
          else {
            error = 1;
            break;
          }
        }
        if (error == 0) break;
      }
    }
  }
  if (a.size() == 2)
    cout << a[0] << endl << a[1];
  else if (!error && b) {
    for (int i = h1.size() - 1; i >= 0; i--) cout << h1[i] << ' ';
    cout << endl;
    for (int i = h2.size() - 1; i >= 0; i--) cout << h2[i] << ' ';
  } else if (error)
    cout << "No solution";
  else {
    if (h2.size() + h1.size() != n)
      cout << "No solution";
    else if (h2.size() == 0) {
      for (int i = 0; i < h1.size(); i++)
        cout << h1[i] << " \n"[i != h1.size() - 1];
    } else {
      for (int i : h1) cout << i << ' ';
      cout << endl;
      for (int i : h2) cout << i << ' ';
    }
  }
  return 0;
}
