#include <bits/stdc++.h>
using namespace std;
const long long maxn = 3e4 + 4;
vector<long long> pro1, pro2;
long long n, a[maxn];
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  if (n == 2) {
    cout << a[0] << "\n" << a[1];
    return 0;
  }
  long long c, b;
  b = a[0];
  c = a[1] - b;
  long long x = 0;
  for (int i = 0; i < n; i++) {
    if (a[i] == c * x + b) {
      x++;
      pro1.push_back(a[i]);
    } else
      pro2.push_back(a[i]);
  }
  bool bl = 0;
  for (int i = 2; i < pro2.size(); i++)
    if (pro2[i] - pro2[i - 1] != pro2[i - 1] - pro2[i - 2]) {
      bl = 1;
      break;
    }
  if (!bl) {
    if (pro2.size()) {
      for (int i = 0; i < pro1.size(); i++) cout << pro1[i] << " ";
      cout << "\n";
      for (int i = 0; i < pro2.size(); i++) cout << pro2[i] << " ";
    } else {
      cout << pro1[0] << "\n";
      for (int i = 1; i < pro1.size(); i++) cout << pro1[i] << " ";
    }
    return 0;
  }
  pro1.clear();
  pro2.clear();
  b = a[1];
  c = a[2] - b;
  x = 0;
  for (int i = 0; i < n; i++) {
    if (a[i] == c * x + b) {
      x++;
      pro1.push_back(a[i]);
    } else
      pro2.push_back(a[i]);
  }
  bl = 0;
  for (int i = 2; i < pro2.size(); i++)
    if (pro2[i] - pro2[i - 1] != pro2[i - 1] - pro2[i - 2]) {
      bl = 1;
      break;
    }
  if (!bl) {
    if (pro2.size()) {
      for (int i = 0; i < pro1.size(); i++) cout << pro1[i] << " ";
      cout << "\n";
      for (int i = 0; i < pro2.size(); i++) cout << pro2[i] << " ";
    } else {
      cout << pro1[0] << "\n";
      for (int i = 1; i < pro1.size(); i++) cout << pro1[i] << " ";
    }
    return 0;
  }
  pro1.clear();
  pro2.clear();
  b = a[0];
  c = a[2] - b;
  x = 0;
  for (int i = 0; i < n; i++) {
    if (a[i] == c * x + b) {
      x++;
      pro1.push_back(a[i]);
    } else
      pro2.push_back(a[i]);
  }
  bl = 0;
  for (int i = 2; i < pro2.size(); i++)
    if (pro2[i] - pro2[i - 1] != pro2[i - 1] - pro2[i - 2]) {
      bl = 1;
      break;
    }
  if (!bl) {
    if (pro2.size()) {
      for (int i = 0; i < pro1.size(); i++) cout << pro1[i] << " ";
      cout << "\n";
      for (int i = 0; i < pro2.size(); i++) cout << pro2[i] << " ";
    } else {
      cout << pro1[0] << "\n";
      for (int i = 1; i < pro1.size(); i++) cout << pro1[i] << " ";
    }
    return 0;
  }
  pro1.clear();
  pro2.clear();
  b = a[n - 1];
  c = a[n - 2] - b;
  x = 0;
  for (int i = n - 1; i >= 0; i--) {
    if (a[i] == c * x + b) {
      x++;
      pro1.push_back(a[i]);
    } else
      pro2.push_back(a[i]);
  }
  bl = 0;
  for (int i = 2; i < pro2.size(); i++)
    if (pro2[i] - pro2[i - 1] != pro2[i - 1] - pro2[i - 2]) {
      bl = 1;
      break;
    }
  if (!bl) {
    if (pro2.size()) {
      for (int i = pro1.size() - 1; i >= 0; i--) cout << pro1[i] << " ";
      cout << "\n";
      for (int i = pro2.size() - 1; i >= 0; i--) cout << pro2[i] << " ";
    } else {
      cout << pro1[0] << "\n";
      for (int i = pro1.size() - 1; i > 0; i--) cout << pro1[i] << " ";
    }
    return 0;
  }
  pro1.clear();
  pro2.clear();
  b = a[n - 1];
  c = a[n - 3] - b;
  x = 0;
  for (int i = 0; i < n; i++) {
    if (a[i] == c * x + b) {
      x++;
      pro1.push_back(a[i]);
    } else
      pro2.push_back(a[i]);
  }
  bl = 0;
  for (int i = 2; i < pro2.size(); i++)
    if (pro2[i] - pro2[i - 1] != pro2[i - 1] - pro2[i - 2]) {
      bl = 1;
      break;
    }
  if (!bl) {
    if (pro2.size()) {
      for (int i = pro1.size() - 1; i >= 0; i--) cout << pro1[i] << " ";
      cout << "\n";
      for (int i = pro2.size() - 1; i >= 0; i--) cout << pro2[i] << " ";
    } else {
      cout << pro1[0] << "\n";
      for (int i = pro1.size() - 1; i > 0; i--) cout << pro1[i] << " ";
    }
    return 0;
  }
  pro1.clear();
  pro2.clear();
  b = a[n - 2];
  c = a[n - 3] - b;
  x = 0;
  for (int i = 0; i < n; i++) {
    if (a[i] == c * x + b) {
      x++;
      pro1.push_back(a[i]);
    } else
      pro2.push_back(a[i]);
  }
  bl = 0;
  for (int i = 2; i < pro2.size(); i++)
    if (pro2[i] - pro2[i - 1] != pro2[i - 1] - pro2[i - 2]) {
      bl = 1;
      break;
    }
  if (!bl) {
    if (pro2.size()) {
      for (int i = pro1.size() - 1; i >= 0; i--) cout << pro1[i] << " ";
      cout << "\n";
      for (int i = pro2.size() - 1; i >= 0; i--) cout << pro2[i] << " ";
    } else {
      cout << pro1[0] << "\n";
      for (int i = pro1.size() - 1; i > 0; i--) cout << pro1[i] << " ";
    }
    return 0;
  }
  cout << "No solution";
}
