#include <bits/stdc++.h>
using namespace std;
const int MAX = 3e4 + 20;
int arr[MAX], n;
bool f[MAX];
bool check() {
  vector<int> tmp;
  for (int i = 0; i < n; i++)
    if (f[i] == 0) tmp.push_back(arr[i]);
  if (tmp.size() <= 2)
    return 1;
  else {
    int C = tmp[1] - tmp[0];
    bool ok = 1;
    for (int i = 2; i < tmp.size(); i++) {
      if (tmp[i] - tmp[i - 1] != C) {
        ok = 0;
        break;
      }
    }
    return ok;
  }
}
void print() {
  for (int i = 0; i < n; i++)
    if (f[i] == 0) printf("%d ", arr[i]);
  printf("\n");
  for (int i = 0; i < n; i++)
    if (f[i] == 1) printf("%d ", arr[i]);
  printf("\n");
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%d", &arr[i]);
  if (n == 1)
    printf("No solution\n");
  else if (n == 2) {
    printf("%d\n", arr[0]), printf("%d\n", arr[1]);
  } else {
    memset(f, 0, sizeof(f));
    int find = arr[n - 2] - (arr[n - 1] - arr[n - 2]),
        C = arr[n - 1] - arr[n - 2];
    f[n - 1] = f[n - 2] = 1;
    for (int pos = n - 3; pos >= 0; pos--) {
      if (arr[pos] == find) {
        f[pos] = 1, find -= C;
      }
    }
    bool qone = 1;
    for (int i = 0; i < n; i++)
      if (f[i] == 0) qone = 0;
    if (qone == 1) {
      printf("%d\n", arr[0]);
      for (int i = 1; i < n; i++) printf("%d ", arr[i]);
      printf("\n");
    } else {
      bool ok = check();
      if (ok)
        print();
      else {
        memset(f, 0, sizeof(f));
        int find = arr[n - 3] - (arr[n - 1] - arr[n - 3]),
            C = arr[n - 1] - arr[n - 3];
        f[n - 1] = f[n - 3] = 1;
        for (int pos = n - 4; pos >= 0; pos--) {
          if (arr[pos] == find) {
            f[pos] = 1;
            find -= C;
          }
        }
        bool ok = check();
        if (ok)
          print();
        else {
          memset(f, 0, sizeof(f));
          int find = arr[n - 3] - (arr[n - 2] - arr[n - 3]),
              C = arr[n - 2] - arr[n - 3];
          f[n - 2] = f[n - 3] = 1;
          for (int pos = n - 4; pos >= 0; pos--) {
            if (arr[pos] == find) {
              f[pos] = 1, find -= C;
            }
          }
          bool ok = check();
          if (ok)
            print();
          else
            printf("No solution\n");
        }
      }
    }
  }
  return 0;
}
