#include <bits/stdc++.h>
using namespace std;
struct node {
  int x, y;
} p[5010], STACK[5010];
int top, n;
int read() {
  int s = 0, fh = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') fh = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    s = s * 10 + (ch - '0');
    ch = getchar();
  }
  return s * fh;
}
int dcmp(double k) {
  if (fabs(k) < 1e-8) return 0;
  if (k < 0)
    return -1;
  else
    return 1;
}
double dis(node aa, node bb) {
  return (double)sqrt(((double)aa.x - bb.x) * ((double)aa.x - bb.x) +
                      ((double)aa.y - bb.y) * ((double)aa.y - bb.y));
}
double mul(node p1, node p2, node p3) {
  return ((double)p2.x - p1.x) * ((double)p3.y - p1.y) -
         ((double)p3.x - p1.x) * ((double)p2.y - p1.y);
}
bool cmp(node aa, node bb) {
  if (dcmp(mul(p[1], aa, bb)) == 0) return dis(p[1], aa) < dis(p[1], bb);
  return dcmp(mul(p[1], aa, bb)) > 0;
}
void Graham() {
  int k = 1, i;
  for (i = 2; i <= n; i++)
    if (p[i].y < p[k].y || (p[i].y == p[k].y && p[i].x < p[k].x)) k = i;
  swap(p[1], p[k]);
  sort(p + 2, p + n + 1, cmp);
  top = 0;
  STACK[++top] = p[1];
  STACK[++top] = p[2];
  for (i = 3; i <= n; i++) {
    while (dcmp(mul(STACK[top - 1], STACK[top], p[i])) <= 0) top--;
    STACK[++top] = p[i];
  }
}
int add(int k, int k1) {
  k += k1;
  if (k > top) k -= top;
  return k;
}
void RC() {
  int i, j, x1, x2, x3, y1, y2, y3, x, xx;
  double mj, ans = 0.0;
  for (i = 1; i <= top; i++) {
    x = add(i, 2);
    for (j = i + 1; j <= top; j++) {
      while (dcmp(mul(STACK[i], STACK[j], STACK[x + 1]) -
                  (mj = mul(STACK[i], STACK[j], STACK[x]))) > 0) {
        xx = x;
        x = add(x, 1);
        if (x == i) {
          x = xx;
          break;
        }
      }
      if (mj > ans) {
        x1 = STACK[i].x;
        y1 = STACK[i].y;
        x2 = STACK[j].x;
        y2 = STACK[j].y;
        x3 = STACK[x].x;
        y3 = STACK[x].y;
        ans = mj;
      }
    }
  }
  printf("%d %d\n", x3 - (x2 - x1), y3 - (y2 - y1));
  printf("%d %d\n", x2 - (x1 - x3), y2 + (y3 - y1));
  printf("%d %d", x1 + (x2 - x3), y1 + (y2 - y3));
}
int main() {
  int i, S;
  n = read();
  S = read();
  for (i = 1; i <= n; i++) {
    p[i].x = read();
    p[i].y = read();
  }
  Graham();
  RC();
  fclose(stdin);
  fclose(stdout);
  return 0;
}
