#include <bits/stdc++.h>
using namespace std;
int n;
vector<int> nt;
int t[30005];
int last, ini;
int nums[30005];
bool rr() {
  nt.clear();
  for (int i = 0; i < n; i++)
    if (t[i] == 0) nt.push_back(nums[i]);
  if (nt.size() <= 2) return true;
  int dd = nt[1] - nt[0];
  int aux = nt[1];
  for (int i = 2; i < nt.size(); i++) {
    if (aux + dd != nt[i])
      return false;
    else
      aux = nt[i];
  }
  return true;
}
bool sepuede(int b, int dif) {
  nt.clear();
  memset(t, 0, sizeof t);
  if (b == 0) t[0] = t[1] = 1, last = nums[1], ini = 2;
  if (b == 1) t[1] = t[2] = 1, last = nums[2], ini = 3;
  if (b == 2) t[2] = t[0] = 1, last = nums[2], ini = 3;
  for (int i = ini; i < n; i++) {
    if (nums[i] == last + dif) {
      t[i] = 1;
      last = nums[i];
    }
  }
  bool yes = rr();
  if (yes)
    return true;
  else {
    for (int i = n - 1; i >= 0; i--) {
      if (t[i] == 1) {
        t[i] = 0;
        yes = rr();
        if (yes) return true;
        break;
      }
    }
  }
  return yes;
}
void pp() {
  if (nt.size() == 0) {
    cout << nums[0] << endl;
    for (int i = 1; i < n; i++) {
      cout << nums[i];
      (i == n - 1) ? cout << "\n" : cout << " ";
    }
    return;
  }
  for (int i = 0; i < n; i++)
    if (t[i] == 1)
      if (i != n - 1)
        printf("%d ", nums[i]);
      else
        printf("%d", nums[i]);
  printf("\n");
  for (int i = 0; i < n; i++)
    if (t[i] == 0)
      if (i != n - 1)
        printf("%d ", nums[i]);
      else
        printf("%d", nums[i]);
  printf("\n");
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d", &nums[i]);
  }
  if (n <= 3) {
    printf("%d", nums[0]);
    printf("\n");
    for (int i = 1; i < n; i++)
      if (i != n - 1)
        printf("%d ", nums[i]);
      else
        printf("%d", nums[i]);
    printf("\n");
    return 0;
  } else {
    int d1 = nums[1] - nums[0];
    int d2 = nums[2] - nums[1];
    int d3 = nums[2] - nums[0];
    bool yes = sepuede(0, d1);
    if (yes) {
      pp();
      return 0;
    }
    yes = sepuede(1, d2);
    if (yes) {
      pp();
      return 0;
    }
    yes = sepuede(2, d3);
    if (yes) {
      pp();
      return 0;
    }
  }
  printf("No solution\n");
  return 0;
}
