#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5 + 10;
const double eps = 1e-8;
int sgn(double x) {
  if (fabs(x) < eps)
    return 0;
  else
    return x > 0 ? 1 : -1;
}
struct Point {
  double x, y;
  Point() {}
  Point(double _x, double _y) { x = _x, y = _y; }
  void input() { scanf("%lf %lf", &x, &y); }
  bool operator<(const Point &other) const {
    if (sgn(x - other.x) == 0) {
      return y < other.y;
    } else {
      return x < other.x;
    }
  }
  double operator^(const Point &other) const {
    return x * other.y - y * other.x;
  }
  Point operator+(const Point &other) const {
    return {x + other.x, y + other.y};
  }
  Point operator-(const Point &other) const {
    return {x - other.x, y - other.y};
  }
} p[N], sta[N];
void convehull(Point *s, int &n) {
  sort(s, s + n);
  int top = 0;
  s[n] = s[0];
  for (int i = 0; i < n; ++i) {
    while (top > 1 &&
           sgn((sta[top - 1] - sta[top - 2]) ^ (s[i] - sta[top - 2])) <= 0) {
      --top;
    }
    sta[top++] = s[i];
  }
  int k = top;
  for (int i = n - 2; i >= 0; --i) {
    while (top > k &&
           sgn((sta[top - 1] - sta[top - 2]) ^ (s[i] - sta[top - 2])) <= 0) {
      top--;
    }
    sta[top++] = s[i];
  }
  if (n > 1) top--;
  n = top;
  for (int i = 0; i < n; ++i) {
    s[i] = sta[i];
  }
}
int n;
ll S;
int main() {
  while (scanf("%d %lld", &n, &S) != EOF) {
    for (int i = 0; i < n; ++i) {
      p[i].input();
    }
    convehull(p, n);
    p[n] = p[0];
    p[n + 1] = p[1];
    p[n + 2] = p[2];
    double sum = 0;
    int ansi = 0, ansj = 1, ansk = 2;
    for (int i = 0, j = 1, k = 2; i < n; ++i) {
      while (fabs(((p[j] - p[i]) ^ (p[k + 1] - p[i]))) -
                 fabs(((p[j] - p[i]) ^ (p[k] - p[i]))) >=
             eps) {
        k = (k + 1) % n;
      }
      while (fabs(((p[k] - p[i]) ^ (p[j + 1] - p[i]))) -
                 fabs(((p[k] - p[i]) ^ (p[j] - p[i]))) >=
             eps) {
        j = (j + 1) % n;
      }
      double res = fabs((p[j] - p[i]) ^ (p[k] - p[i]));
      if (sgn(res - sum) >= 0) {
        sum = res;
        ansi = i, ansj = j, ansk = k;
      }
    }
    Point A = p[ansj] + p[ansk] - p[ansi];
    Point B = p[ansk] + p[ansi] - p[ansj];
    Point C = p[ansi] + p[ansj] - p[ansk];
    printf("%d %d\n", (int)A.x, (int)A.y);
    printf("%d %d\n", (int)B.x, (int)B.y);
    printf("%d %d\n", (int)C.x, (int)C.y);
  }
  return 0;
}
