#include <bits/stdc++.h>
using namespace std;
int n, a[1000005], w[1000005], m, d, ne;
bool u[1000005];
bool check() {
  m = 0;
  for (int i = 0; i < n; i++)
    if (!u[i]) w[m++] = a[i];
  d = w[1] - w[0];
  ne = w[0];
  if (!m) return false;
  if (m < 3) return true;
  for (int i = 0; i < m; i++) {
    if (ne != w[i]) return 0;
    ne = ne + d;
  }
  return 1;
}
void print() {
  for (int i = 0; i < n; i++)
    if (u[i]) printf("%d ", a[i]);
  printf("\n");
  for (int i = 0; i < n; i++)
    if (!u[i]) printf("%d ", a[i]);
  exit(0);
}
void solve(int q1, int q2) {
  memset(u, false, sizeof(u));
  d = q2 - q1;
  ne = q1;
  for (int i = 0; i < n; i++)
    if (ne == a[i]) {
      u[i] = true;
      ne = ne + d;
    }
  if (check()) print();
  ne = n - 1;
  while (!u[ne]) ne--;
  u[ne] = false;
  if (check()) print();
}
int main() {
  scanf("%d\n", &n);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  solve(a[0], a[1]);
  solve(a[0], a[2]);
  solve(a[1], a[2]);
  printf("No solution");
  fclose(stdin);
  fclose(stdout);
  return 0;
}
