func_code_string: #include <bits/stdc++.h>   using namespace std;   using LL = long long int;   struct point {     LL x, y;     point(LL x_ = 0, LL y_ = 0) : x(x_), y(y_) {}     point operator-(const point& b) { return point(x - b.x, y - b.y); }     point operator+(const point& b) { return point(x + b.x, y + b.y); }   };   LL cross_abs(const point& a, const point& b) {     return abs(a.x * b.y - b.x * a.y);   }   bool mult(const point& sp, const point& ep, const point& op) {     return (sp.x - op.x) * (ep.y - op.y) >= (ep.x - op.x) * (sp.y - op.y);   }   bool operator<(const point& l, const point& r) {     return (l.y < r.y) || (l.y == r.y && l.x < r.x);   }   int graham(point pnt[], int n, point res[]) {     int i = 0, len = 0, k = 0, top = 1;     sort(pnt, pnt + n);     if (n == 0) return 0;     res[0] = pnt[0];     if (n == 1) return 1;     res[1] = pnt[1];     if (n == 2) return 2;     res[2] = pnt[2];     for (i = 2; i < n; i++) {       while (top && mult(pnt[i], res[top], res[top - 1])) top--;       res[++top] = pnt[i];     }     len = top;     res[++top] = pnt[n - 2];     for (i = n - 3; i >= 0; i--) {       while (top != len && mult(pnt[i], res[top], res[top - 1])) top--;       res[++top] = pnt[i];     }     return top;   }   int n = 0;   LL ss = 0;   const int maxn = 5e3 + 5;   point p[maxn], cp[maxn];   LL maxs = 0;   int ansa = 0, ansb = 0, ansc = 0;   int main(void) {     scanf( %d %lld , &n, &ss);     for (int i = 0; i < n; ++i) scanf( %lld %lld , &p[i].x, &p[i].y);     int cnt = graham(p, n, cp);     for (int i = 0; i < cnt; ++i) {       for (int j = i + 1, k = (j + 1) % cnt; j < cnt && k != i; ++j) {         while (cross_abs(cp[i] - cp[k], cp[j] - cp[k]) <                cross_abs(cp[i] - cp[(k + 1) % cnt], cp[j] - cp[(k + 1) % cnt]))           k = (k + 1) % cnt;         if (k == i || k == j) continue;         LL s = cross_abs(cp[i] - cp[k], cp[j] - cp[k]);         if (s > maxs) {           maxs = s;           ansa = i, ansb = j, ansc = k;         }       }     }     point a = cp[ansa] - cp[ansb] + cp[ansc];     point b = cp[ansa] + cp[ansb] - cp[ansc];     point c = cp[ansb] + cp[ansc] - cp[ansa];     printf( %lld %lld n , a.x, a.y);     printf( %lld %lld n , b.x, b.y);     printf( %lld %lld n , c.x, c.y);     return 0;   }   