#include <bits/stdc++.h>
using namespace std;
typedef long long coord_t;
typedef long long coord2_t;
struct Point {
  coord_t x, y;
  bool operator<(const Point &p) const {
    return x < p.x || (x == p.x && y < p.y);
  }
  void print() { cout << "point " << x << " " << y << endl; }
};
coord2_t cross(const Point &O, const Point &A, const Point &B) {
  return (A.x - O.x) * (B.y - O.y) - (A.y - O.y) * (B.x - O.x);
}
vector<Point> convex_hull(vector<Point> P) {
  int n = P.size(), k = 0;
  if (n == 1) return P;
  vector<Point> H(2 * n);
  sort(P.begin(), P.end());
  for (int i = 0; i < n; ++i) {
    while (k >= 2 && cross(H[k - 2], H[k - 1], P[i]) <= 0) k--;
    H[k++] = P[i];
  }
  for (int i = n - 2, t = k + 1; i >= 0; i--) {
    while (k >= t && cross(H[k - 2], H[k - 1], P[i]) <= 0) k--;
    H[k++] = P[i];
  }
  H.resize(k - 1);
  return H;
}
double AREA(Point A, Point B, Point C) {
  double area =
      (A.x * B.y - B.x * A.y + B.x * C.y - B.y * C.x - A.x * C.y + A.y * C.x);
  area = abs(area);
  return area;
}
int n;
vector<Point> P, np;
Point p;
double s, x, y;
int main() {
  cin >> n >> s;
  for (int i = 0; i < n; i++) {
    scanf("%lf %lf", &x, &y);
    p.x = x, p.y = y;
    P.push_back(p);
  }
  np = convex_hull(P);
  n = np.size();
  int ansa = 0, ansb = 1, ansc = 2;
  int a = 0, b = 1, c = 2;
  double mx = AREA(np[0], np[1], np[2]);
  while (true) {
    while (true) {
      while (AREA(np[a], np[b], np[c]) <= AREA(np[a], np[b], np[(c + 1) % n])) {
        c++;
        c %= n;
      }
      if (AREA(np[a], np[b], np[c]) <= AREA(np[a], np[(b + 1) % n], np[c])) {
        b++;
        b %= n;
      } else {
        break;
      }
    }
    if (mx < AREA(np[a], np[b], np[c])) {
      mx = AREA(np[a], np[b], np[c]);
      ansa = a, ansb = b, ansc = c;
    }
    a++;
    if (a == b) b++, b %= n;
    if (b == c) c++, c %= n;
    if (a == n) break;
  }
  double aax = np[ansb].x + np[ansc].x - np[ansa].x;
  double bbx = np[ansa].x + np[ansc].x - np[ansb].x;
  double ccx = np[ansb].x + np[ansa].x - np[ansc].x;
  double aay = np[ansb].y + np[ansc].y - np[ansa].y;
  double bby = np[ansa].y + np[ansc].y - np[ansb].y;
  double ccy = np[ansb].y + np[ansa].y - np[ansc].y;
  printf("%0.0lf %0.0lf\n%0.0lf %0.0lf\n%0.0lf %0.0lf\n", aax, aay, bbx, bby,
         ccx, ccy);
  return 0;
}
