#include <bits/stdc++.h>
using namespace std;
struct node {
  long long x, y;
  node() {}
  node(long long x_, long long y_) {
    x = x_;
    y = y_;
  }
  node operator-(const node &b) { return node(x - b.x, y - b.y); }
  long long operator^(const node &b) { return x * b.y - b.x * y; }
} p[5010], res[5010];
int n, size;
bool cmp(const node &a, const node &b) {
  if (a.y != b.y) return a.y < b.y;
  return a.x < b.x;
}
void convex_hull() {
  sort(p + 1, p + n + 1, cmp);
  res[0] = p[1];
  res[1] = p[2];
  size = 1;
  for (int i = 3; i <= n; i++) {
    while (size && ((res[size] - res[size - 1]) ^ (p[i] - res[size])) < 0)
      size--;
    res[++size] = p[i];
  }
  for (int i = n - 1; i; i--) {
    while (size && ((res[size] - res[size - 1]) ^ (p[i] - res[size])) < 0)
      size--;
    res[++size] = p[i];
  }
}
void rotating_calipers(node &a, node &b, node &c) {
  int x, y, z;
  long long ans = 0;
  for (int i = 0; i < size; i++) {
    int k = 1;
    for (int j = i + 1; j < size; j++) {
      while (((res[j] - res[i]) ^ (res[k + 1] - res[i])) >
             ((res[j] - res[i]) ^ (res[k] - res[i])))
        k = (k + 1) % size;
      long long now = (res[j] - res[i]) ^ (res[k] - res[i]);
      if (now > ans) {
        ans = now;
        x = i;
        y = j;
        z = k;
      }
    }
  }
  a.x = res[x].x + res[y].x - res[z].x;
  b.x = res[x].x + res[z].x - res[y].x;
  c.x = res[z].x + res[y].x - res[x].x;
  a.y = res[x].y + res[y].y - res[z].y;
  b.y = res[x].y + res[z].y - res[y].y;
  c.y = res[z].y + res[y].y - res[x].y;
}
int main() {
  scanf("%d%*d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%I64d%I64d", &p[i].x, &p[i].y);
  }
  convex_hull();
  node a, b, c;
  rotating_calipers(a, b, c);
  cout << a.x << " " << a.y << endl;
  cout << b.x << " " << b.y << endl;
  cout << c.x << " " << c.y << endl;
}
