func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = 2147483647;   const long long LLINF = 9223372036854775807LL;   const int maxn = 30010;   int a[maxn] = {};   int used[maxn] = {};   int main() {     int n;     scanf( %d , &n);     for (int i = 0; i < n; ++i) scanf( %d , &a[i]);     vector<int> ans1, ans2;     if (n == 2) {       ans1.push_back(a[0]);       ans2.push_back(a[1]);       goto ooo;     }     if (n == 3) {       ans1.push_back(a[0]);       ans1.push_back(a[1]);       ans2.push_back(a[2]);       goto ooo;     }     if (n == 4) {       ans1.push_back(a[0]);       ans1.push_back(a[1]);       ans2.push_back(a[2]);       ans2.push_back(a[3]);       goto ooo;     }     for (int i = 0; i < 5; ++i)       for (int j = i + 1; j < 5; ++j)         for (int k = j + 1; k < 5; ++k) {           if (a[j] - a[i] == a[k] - a[j]) {             memset(used, 0, sizeof(used));             used[i] = 1;             used[j] = 1;             used[k] = 1;             int d = a[j] - a[i];             int cur = a[k] + d;             int cused = 3;             int lused = k;             for (int t = k + 1; t < n; ++t) {               if (a[t] == cur) {                 used[t] = 1;                 lused = t;                 cused++;                 cur += d;               }             }             int pppp = 2;             while (pppp--) {               if (pppp == 0) used[lused] = 0;               bool ok = true;               int p1 = -1;               int p2 = -1;               int curd = 0;               for (int t = 0; t < n; ++t) {                 if (used[t]) continue;                 int ccc = a[i];                 if (curd == 0) {                   if (p2 == -1) {                     p2 = p1;                     p1 = t;                     if (p2 != -1) {                       curd = a[p1] - a[p2];                     }                   }                 } else {                   if (a[t] - a[p1] != curd) {                     ok = false;                     break;                   } else {                     p1 = t;                   }                 }               }               if (ok) {                 if (cused == n) used[0] = 0;                 for (int t = 0; t < n; ++t) {                   if (used[t])                     ans1.push_back(a[t]);                   else                     ans2.push_back(a[t]);                 }                 goto ooo;               }             }           }         }     printf( No solution );     return 0;   ooo:     for (int i = 0; i < ans1.size(); ++i) printf( %d  , ans1[i]);     printf(  n );     for (int i = 0; i < ans2.size(); ++i) printf( %d  , ans2[i]);     return 0;   }   