#include <bits/stdc++.h>
using namespace std;
const int sz = 5002;
long long s;
int n, m, i1, i2, i3;
pair<int, int> a[sz * 2], b[sz * 2];
long long cmp(pair<int, int> a, pair<int, int> b, pair<int, int> o) {
  return (1ll * o.first - 1ll * a.first) * (1ll * b.second - 1ll * a.second) -
         (1ll * o.second - 1ll * a.second) * (1ll * b.first - 1ll * a.first);
}
double sight(pair<int, int> a, pair<int, int> b, pair<int, int> c) {
  return (double)abs(((1ll * a.first - 1ll * b.first) *
                          (1ll * a.second + 1ll * b.second) +
                      (1ll * b.first - 1ll * c.first) *
                          (1ll * b.second + 1ll * c.second) +
                      (1ll * c.first - 1ll * a.first) *
                          (1ll * c.second + 1ll * a.second))) /
         2;
}
void Protecja() {
  b[++m] = a[1];
  b[++m] = a[2];
  for (int i = 3; i <= n; i++) {
    while (m >= 2 && cmp(b[m - 1], b[m], a[i]) <= 0) m--;
    b[++m] = a[i];
  }
  int t = m + 1;
  for (int i = n - 1; i >= 1; i--) {
    while (m >= t && cmp(b[m - 1], b[m], a[i]) <= 0) m--;
    b[++m] = a[i];
  }
  m--;
  for (int i = m + 1; i <= m * 2; i++) b[i] = b[i - m];
}
void curaja() {
  double mx = 0;
  int A = 1, B = 2, C = 3;
  while (true) {
    while (true) {
      while (sight(b[A], b[B], b[C]) <= sight(b[A], b[B], b[C % m + 1]))
        C = C % m + 1;
      if (sight(b[A], b[B], b[C]) <= sight(b[A], b[B % m + 1], b[C])) {
        B = B % m + 1;
        continue;
      } else
        break;
    }
    if (sight(b[A], b[B], b[C]) > sight(b[i1], b[i2], b[i3])) {
      i1 = A;
      i2 = B;
      i3 = C;
    }
    A = A % m + 1;
    if (A == B) B = B % m + 1;
    if (B == C) C = C % m + 1;
    if (A == 1) break;
  }
  pair<int, int> f[4];
  f[1] = b[i1];
  f[2] = b[i2];
  f[3] = b[i3];
  sort(f + 1, f + 4);
  printf("%d %d\n%d %d\n%d %d\n", f[1].first + f[2].first - f[3].first,
         f[1].second + f[2].second - f[3].second,
         f[2].first + f[3].first - f[1].first,
         f[2].second + f[3].second - f[1].second,
         f[3].first + f[1].first - f[2].first,
         f[3].second + f[1].second - f[2].second);
}
int main() {
  scanf("%d%d", &n, &s);
  for (int i = 1; i <= n; i++) scanf("%d%d", &a[i].first, &a[i].second);
  sort(a + 1, a + 1 + n);
  Protecja();
  curaja();
  return 0;
}
