#include <bits/stdc++.h>
using namespace std;
struct point {
  int x, y;
  point(){};
  point(int xx, int yy) {
    x = xx;
    y = yy;
  }
  point friend operator+(point a, point b) {
    return point(a.x + b.x, a.y + b.y);
  }
  point friend operator-(point a, point b) {
    return point(a.x - b.x, a.y - b.y);
  }
  long long friend operator*(point a, point b) {
    return (long long)a.x * b.y - (long long)a.y * b.x;
  }
} a[5050], s[5050];
int n, tot;
long long S;
bool cmp(point a, point b) {
  if (a.x != b.x) return a.x < b.x;
  return a.y < b.y;
}
void put(point a) { printf("%d %d\n", a.x, a.y); }
long long area(int i, int j, int k) {
  return abs((s[j] - s[i]) * (s[k] - s[i]));
}
int main() {
  scanf("%d%I64d", &n, &S);
  for (int i = 1; i <= n; i++) scanf("%d%d", &a[i].x, &a[i].y);
  sort(a + 1, a + 1 + n, cmp);
  for (int i = 1; i <= n; i++) {
    while (tot > 1 && (a[i] - s[tot - 1]) * (s[tot] - s[tot - 1]) <= 0) tot--;
    s[++tot] = a[i];
  }
  int k = tot;
  for (int i = n - 1; i > 0; i--) {
    while (tot > k && (a[i] - s[tot - 1]) * (s[tot] - s[tot - 1]) <= 0) tot--;
    s[++tot] = a[i];
  }
  tot--;
  S = 0;
  int ii, jj, kk;
  for (int i = 1; i < tot - 1; i++) {
    int tmp = i + 2;
    for (int j = i + 1; j <= tot; j++) {
      while (tmp < tot && area(i, j, tmp + 1) > area(i, j, tmp)) tmp++;
      if (area(i, j, tmp) > S) {
        S = area(i, j, tmp);
        ii = i;
        jj = j;
        kk = tmp;
      }
    }
  }
  put(s[ii] + s[jj] - s[kk]);
  put(s[jj] + s[kk] - s[ii]);
  put(s[kk] + s[ii] - s[jj]);
  return 0;
}
