func_code_string: #include <bits/stdc++.h>   using namespace std;   struct point {     long long x, y;   };   point p[345678];   vector<point> important, ugly;   vector<int> ilist;   int n;   long long ans[345678];   long long distance(int i, int j) {     return llabs(important[i].x - important[j].x) +            llabs(important[i].y - important[j].y);   }   long long distance(point p, point q) {     return llabs(p.x - q.x) + llabs(p.y - q.y);   }   long long dp[15][15][15][15];   long long lovetourist(int i, int f, int l, int k) {     if (k == 0) return distance(f, l);     if (i == important.size()) return -1e17;     if (dp[i + 1][f + 1][l + 1][k + 1] != -1)       return dp[i + 1][f + 1][l + 1][k + 1];     long long ret = lovetourist(i + 1, f, l, k);     if (f == -1)       ret = max(ret, lovetourist(i + 1, i, i, k - 1));     else       ret = max(ret, distance(l, i) + lovetourist(i + 1, f, i, k - 1));     return dp[i + 1][f + 1][l + 1][k + 1] = ret;   }   long long respecttourist() {     long long res = -1e17;     for (int i = 0; i < ilist.size(); i++) {       for (int j = i + 1; j < ilist.size(); j++) {         for (int k = 1; k <= n; k++) {           if (k == ilist[i] || k == ilist[j]) continue;           res = max(res, distance(p[ilist[i]], p[ilist[j]]) +                              distance(p[ilist[i]], p[k]) +                              distance(p[ilist[j]], p[k]));         }       }     }     return res;   }   int main() {     cin >> n;     long long minx, maxx, miny, maxy, sum = 0;     for (int i = 1; i <= n; i++) {       cin >> p[i].x >> p[i].y;       if (i == 1) {         minx = p[i].x;         maxx = p[i].x;         miny = p[i].y;         maxy = p[i].y;       }       minx = min(minx, p[i].x);       maxx = max(maxx, p[i].x);       miny = min(miny, p[i].y);       maxy = max(maxy, p[i].y);     }     p[n + 1] = p[1];     for (int i = 1; i <= n; i++) {       sum += llabs(p[i].x - p[i + 1].x) + llabs(p[i].y - p[i + 1].y);       ilist.push_back(i);       if (p[i].x == minx)         important.push_back(p[i]);       else if (p[i].x == maxx)         important.push_back(p[i]);       else if (p[i].y == miny)         important.push_back(p[i]);       else if (p[i].y == maxy)         important.push_back(p[i]);       else {         ugly.push_back(p[i]);         ilist.pop_back();       }     }     memset(dp, -1, sizeof(dp));     long long res = lovetourist(0, -1, -1, important.size());     assert(2 <= important.size() && important.size() <= 8);     int k = n;     while (!ugly.empty()) {       ans[k--] = res;       ugly.pop_back();     }     for (int i = important.size(); i >= 3; i--)       ans[k--] = lovetourist(0, -1, -1, i);     ans[3] = max(ans[3], respecttourist());     for (int i = 3; i <= n; i++) cout << ans[i] <<    ;     return 0;   }   