func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 5;   const long long MOD = 1e9 + 7;   vector<int> ans1, ans2;   int a[N];   bool work(bool c[], int n) {     vector<int> p1, p2;     for (int i = 0; i < n; ++i) {       if (c[i])         p1.push_back(a[i]);       else         p2.push_back(a[i]);     }     if (p2.size() == 0)       return 0;     else if (p2.size() <= 2) {       ans1 = p1;       ans2 = p2;       return 1;     } else {       int r = p2[1] - p2[0];       for (int i = 2; i < p2.size(); ++i) {         if (p2[i] - p2[i - 1] != r) return 0;       }       ans1 = p1;       ans2 = p2;       return 1;     }   }   bool check(int f, int r, int n) {     bool c[n];     memset(c, false, sizeof(c));     vector<int> p1, p2;     for (int i = 0; i < n; ++i) {       if (a[i] == f) {         c[i] = 1;         f += r;       }     }     if (work(c, n)) return 1;     for (int i = n - 1; i >= 0; --i) {       if (c[i]) {         c[i] = 0;         return work(c, n);       }     }     return 0;   }   void printSolution() {     for (int i = 0; i < ans1.size(); ++i) {       cout << ans1[i] <<    n [ans1.size() - i == 1];     }     for (int i = 0; i < ans2.size(); ++i) {       cout << ans2[i] <<    n [ans2.size() - i == 1];     }   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     int n;     cin >> n;     for (int i = 0; i < n; ++i) {       cin >> a[i];     }     if (check(a[0], a[1] - a[0], n)) {       printSolution();     } else if (check(a[0], a[2] - a[0], n)) {       printSolution();     } else if (check(a[1], a[2] - a[1], n)) {       printSolution();     } else       cout <<  No solution  << endl;     return 0;   }   