#include <bits/stdc++.h>
using namespace std;
int N;
long long S;
vector<int> con1, con2, con;
complex<long long> t1[5005];
int ccw(complex<long long> a, complex<long long> b, complex<long long> c) {
  long long d = 1LL * (real(b) - real(a)) * (imag(c) - imag(a)) -
                1LL * (imag(b) - imag(a)) * (real(c) - real(a));
  if (d > 0) {
    return 1;
  }
  if (d < 0) {
    return -1;
  }
  return 0;
}
bool cmp1(complex<long long> a, complex<long long> b) {
  if (real(a) != real(b)) {
    return real(a) < real(b);
  }
  return imag(a) < imag(b);
}
long long area(complex<long long> A, complex<long long> B,
               complex<long long> C) {
  return abs(real(A) * (imag(B) - imag(C)) + real(B) * (imag(C) - imag(A)) +
             real(C) * (imag(A) - imag(B)));
}
int main() {
  ios_base::sync_with_stdio(false);
  if (fopen("cf682e.in", "r")) {
    freopen("cf682e.in", "r", stdin);
    freopen("cf682e.out", "w", stdout);
  }
  cin >> N >> S;
  for (int i = 0; i < N; i++) {
    long long a, b;
    cin >> a >> b;
    t1[i] = complex<long long>(a, b);
  }
  sort(t1, t1 + N, cmp1);
  con1.push_back(0);
  con1.push_back(1);
  for (int i = 2; i < N; i++) {
    con1.push_back(i);
    int a = con1[con1.size() - 3], b = con1[con1.size() - 2],
        c = con1[con1.size() - 1];
    while (ccw(t1[a], t1[b], t1[c]) != 1 && con1.size() >= 3) {
      con1.pop_back();
      con1.pop_back();
      con1.push_back(c);
      if (con1.size() >= 3) {
        a = con1[con1.size() - 3];
        b = con1[con1.size() - 2];
        c = con1[con1.size() - 1];
      }
    }
  }
  con1.pop_back();
  con2.push_back(N - 1);
  con2.push_back(N - 2);
  for (int i = N - 3; i >= 0; i--) {
    con2.push_back(i);
    int a = con2[con2.size() - 3], b = con2[con2.size() - 2],
        c = con2[con2.size() - 1];
    while (ccw(t1[a], t1[b], t1[c]) != 1 && con2.size() >= 3) {
      con2.pop_back();
      con2.pop_back();
      con2.push_back(c);
      if (con2.size() >= 3) {
        a = con2[con2.size() - 3];
        b = con2[con2.size() - 2];
        c = con2[con2.size() - 1];
      }
    }
  }
  con2.pop_back();
  for (int i = 0; i < con1.size(); i++) {
    con.push_back(con1[i]);
  }
  for (int i = 0; i < con2.size(); i++) {
    con.push_back(con2[i]);
  }
  int a = 0, b = 1, c = 2;
  int v1 = 0, v2 = 1, v3 = 2;
  while (true) {
    while (true) {
      while (area(t1[con[a]], t1[con[b]], t1[con[c]]) <=
             area(t1[con[a]], t1[con[b]], t1[con[(c + 1) % (con.size())]])) {
        c = (c + 1) % (con.size());
      }
      if (area(t1[con[a]], t1[con[b]], t1[con[c]]) <=
          area(t1[con[a]], t1[con[(b + 1) % (con.size())]], t1[con[c]])) {
        b = (b + 1) % (con.size());
        continue;
      } else {
        break;
      }
    }
    if (area(t1[con[a]], t1[con[b]], t1[con[c]]) >
        area(t1[con[v1]], t1[con[v2]], t1[con[v3]])) {
      v1 = a;
      v2 = b;
      v3 = c;
    }
    a = (a + 1) % (con.size());
    if (a == b) {
      b = ((b + 1) % (con.size()));
    }
    if (b == c) {
      c = ((c + 1) % (con.size()));
    }
    if (a == 0) {
      break;
    }
  }
  long long x1 = real(t1[con[v1]]), x2 = real(t1[con[v2]]),
            x3 = real(t1[con[v3]]), y1 = imag(t1[con[v1]]),
            y2 = imag(t1[con[v2]]), y3 = imag(t1[con[v3]]);
  cout << x1 + x2 - x3 << ' ' << y1 + y2 - y3 << '\n'
       << x1 - x2 + x3 << ' ' << y1 - y2 + y3 << '\n'
       << -x1 + x2 + x3 << ' ' << -y1 + y2 + y3 << '\n';
  return 0;
}
