func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, a[100100];   map<int, int> m;   int mi(int a, int b, int c) { return min(min(a, b), c); }   int mx(int a, int b, int c) { return max(max(a, b), c); }   int md(int a, int b, int c) {     return 0LL + a + b + c - mi(a, b, c) - mx(a, b, c);   }   int main() {     ios_base::sync_with_stdio(false);     cin >> n;     for (int i = 1; i <= n; i++) {       cin >> a[i];       m[a[i]]++;     }     a[0] = a[1];     sort(a + 1, a + n + 1);     int n3 = n / 3;     n3 += n % 3;     int p1 = 0, p2 = 0;     for (auto p : m) {       if (p.second >= n / 3) {         if (p1 == 0)           p1 = p.first;         else           p2 = p.first;       }     }     if (p2 == 0 && p1 == 0) {       cout << n / 3 <<   n ;       for (int i = 1, j = n / 3 + 1, k = 2 * n / 3 + 1; i <= n / 3;            i++, j++, k++) {         cout << a[k] <<     << a[j] <<     << a[i] <<   n ;       }       return 0;     }     if (p2 == 0 && p1 != 0) {       vector<pair<int, pair<int, int> > > ans;       priority_queue<pair<int, int> > v;       map<int, int> use;       for (int i = 1; i <= n; i++)         if (a[i] != p1 && use[a[i]] == 0) v.push({m[a[i]], a[i]}), use[a[i]]++;       while (v.size() > 1) {         int x1 = v.top().second;         v.pop();         m[x1]--;         int x2 = v.top().second;         v.pop();         m[x2]--;         if (m[x1] > 0) v.push({m[x1], x1});         if (m[x2] > 0) v.push({m[x2], x2});         ans.push_back({mx(p1, x1, x2), {md(p1, x1, x2), mi(p1, x1, x2)}});         if (ans.size() == n / 3) break;       }       cout << ans.size() <<   n ;       for (int i = 0; i < ans.size(); i++) {         cout << ans[i].first <<     << ans[i].second.first <<                  << ans[i].second.second <<   n ;       }     }     if (p2 != 0) {       vector<pair<int, pair<int, int> > > ans;       for (int i = 1; i <= n; i++) {         if (a[i] != p1 && a[i] != p2) {           ans.push_back({mx(p1, p2, a[i]), {md(p1, p2, a[i]), mi(p1, p2, a[i])}});           if (ans.size() == n / 3) break;         }       }       cout << ans.size() <<   n ;       for (int i = 0; i < ans.size(); i++) {         cout << ans[i].first <<     << ans[i].second.first <<                  << ans[i].second.second <<   n ;       }     }   }   