#include <bits/stdc++.h>   using namespace std;   int n;   vector<int> a;   bool check(vector<int> &b) {     if (b.size() <= 1) return !b.empty();     int d = a[b[1]] - a[b[0]];     for (int i = 1; i < b.size(); ++i) {       if (d != a[b[i]] - a[b[i - 1]]) return false;     }     return true;   }   bool solve(int o, int p) {     vector<int> fir, sec;     fir.push_back(o);     fir.push_back(p);     if (p == 2) {       sec.push_back(1 - o);     }     for (int i = p + 1; i < n; ++i) {       if (a[i] == a[fir[1]] - a[fir[0]] + a[*fir.rbegin()]) {         fir.push_back(i);       } else {         sec.push_back(i);       }     }     if (check(fir) && check(sec)) {       for (auto &i : fir) {         cout << a[i] <<    ;       }       cout << endl;       for (auto &i : sec) {         cout << a[i] <<    ;       }       cout << endl;       return true;     }     sec.push_back(*fir.rbegin());     fir.pop_back();     sort(sec.begin(), sec.end());     if (check(fir) && check(sec)) {       for (auto &i : fir) {         cout << a[i] <<    ;       }       cout << endl;       for (auto &i : sec) {         cout << a[i] <<    ;       }       cout << endl;       return true;     }     return false;   }   int main() {     scanf( %d , &n);     a.resize(n);     for (int i = 0; i < n; ++i) {       scanf( %d , &a[i]);     }     if (n == 2) {       cout << a[0] << endl << a[1] << endl;     } else {       if (solve(0, 1)) return 0;       if (solve(0, 2)) return 0;       if (solve(1, 2)) return 0;       puts( No solution n );     }     return 0;   }   