#include <bits/stdc++.h>
using namespace std;
const int iinf = 1 << 29;
const long long inf = 1ll << 60;
const long long mod = 1e9 + 7;
void GG() {
  cout << "-1\n";
  exit(0);
}
long long mpow(long long a, long long n, long long mo = mod) {
  long long re = 1;
  while (n > 0) {
    if (n & 1) re = re * a % mo;
    a = a * a % mo;
    n >>= 1;
  }
  return re;
}
long long inv(long long b, long long mo = mod) {
  if (b == 1) return b;
  return (mo - mo / b) * inv(mo % b) % mo;
}
const int maxn = 5005;
struct pt {
  long long x, y;
  pt operator-(const pt &b) const { return {x - b.x, y - b.y}; }
  pt operator+(const pt &b) const { return {x + b.x, y + b.y}; }
  long long operator^(const pt &b) const { return x * b.y - y * b.x; }
};
vector<pt> cv;
int n;
long long Area(int i, int j, int k) {
  return abs((cv[j] - cv[i]) ^ (cv[k] - cv[i]));
}
inline int first(int x) {
  if (x >= n) return x - n;
  return x;
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  ;
  long long S;
  cin >> n >> S;
  vector<pt> v;
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    v.push_back({x, y});
  }
  sort(v.begin(), v.end(),
       [&](pt a, pt b) { return a.x != b.x ? a.x < b.x : a.y < b.y; });
  vector<pt> stk;
  for (int i = 0; i < n; i++) {
    while (stk.size() > 1) {
      if (((v[i] - stk.back()) ^ (stk[(int)stk.size() - 2] - stk.back())) <= 0)
        stk.pop_back();
      else
        break;
    }
    stk.push_back(v[i]);
  }
  stk.pop_back();
  cv = stk;
  stk.clear();
  for (int i = n - 1; i >= 0; i--) {
    while (stk.size() > 1) {
      if (((v[i] - stk.back()) ^ (stk[(int)stk.size() - 2] - stk.back())) <= 0)
        stk.pop_back();
      else
        break;
    }
    stk.push_back(v[i]);
  }
  v.clear();
  stk.pop_back();
  for (auto x : stk) cv.push_back(x);
  n = (int)cv.size();
  vector<int> ans = {-1, -1, -1};
  long long mxA = 0;
  for (int df = 1; df <= n / 2; df++) {
    int k = 0 + df;
    for (int i = 0; i < n; i++) {
      int j = first(i + df);
      if (first(k + 1) == j) k = first(k + 1);
      long long A = Area(i, j, k);
      while (first(k + 1) != i && Area(i, j, first(k + 1)) > A) {
        k = first(k + 1);
        A = Area(i, j, k);
        if (A > mxA) {
          mxA = A;
          ans = {i, j, k};
        }
      }
    }
  };
  for (int i = 0; i < 3; i++) {
    pt P = (cv[ans[(i + 2) % 3]] - cv[ans[i]]);
    P = P + cv[ans[(i + 1) % 3]];
    cout << P.x << ' ' << P.y << '\n';
  }
}
