#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:66777216")
using namespace std;
long long area(std::pair<int, int> a, std::pair<int, int> b,
               std::pair<int, int> c) {
  return (long long)(b.first - a.first) * (c.second - a.second) -
         (long long)(c.first - a.first) * (b.second - a.second);
}
inline bool cw(std::pair<int, int> a, std::pair<int, int> b,
               std::pair<int, int> c) {
  return area(a, b, c) < 0;
}
inline bool ccw(std::pair<int, int> a, std::pair<int, int> b,
                std::pair<int, int> c) {
  return area(a, b, c) > 0;
}
int n;
std::vector<std::pair<int, int> > convex(std::vector<std::pair<int, int> > A) {
  sort((A).begin(), (A).end());
  std::vector<std::pair<int, int> > st;
  for (int i = 0; i < (int)(n); ++i) {
    if (((int)((st).size())) < 2) {
      st.push_back(A[i]);
      continue;
    }
    while (((int)((st).size())) >= 2 && !cw(st[((int)((st).size())) - 2],
                                            st[((int)((st).size())) - 1], A[i]))
      st.pop_back();
    st.push_back(A[i]);
  }
  std::vector<std::pair<int, int> > o = st;
  st.clear();
  for (int i = (int)(n)-1; i >= 0; --i) {
    if (((int)((st).size())) < 2) {
      st.push_back(A[i]);
      continue;
    }
    while (((int)((st).size())) >= 2 && !cw(st[((int)((st).size())) - 2],
                                            st[((int)((st).size())) - 1], A[i]))
      st.pop_back();
    st.push_back(A[i]);
  }
  for (int i = 1; i <= (int)(((int)((st).size())) - 2); ++i) o.push_back(st[i]);
  return o;
}
inline void F(int& i) {
  ++i;
  if (i == n) i = 0;
}
std::vector<std::pair<int, int> > A;
void G(set<std::pair<int, int> >& se, int i1, int j1, int k1) {
  se.insert(make_pair(A[i1].first + A[j1].first - A[k1].first,
                      A[i1].second + A[j1].second - A[k1].second));
  se.insert(make_pair(A[i1].first - A[j1].first + A[k1].first,
                      A[i1].second - A[j1].second + A[k1].second));
}
void solve() {
  long long S;
  scanf("%d%I64d", &n, &S);
  A.resize(n);
  for (int i = 0; i < (int)(n); ++i) scanf("%d%d", &A[i].first, &A[i].second);
  A = convex(A);
  long long res = 0;
  int i1 = 0, j1 = 0, k1 = 0;
  n = ((int)((A).size()));
  for (int i = 0; i < (int)(n); ++i) {
    int j = i;
    F(j);
    int k = j;
    F(k);
    for (; j != i; F(j)) {
      int t = k;
      if (t == j) F(t);
      if (t == i) break;
      long long val = abs(area(A[i], A[j], A[t]));
      while (1) {
        long long val2 = abs(area(A[i], A[j], A[t]));
        if (val2 >= val) {
          val = val2;
          k = t;
        } else
          break;
        F(t);
        if (t == i) break;
      }
      if (val > res) {
        res = val;
        i1 = i;
        j1 = j;
        k1 = k;
      }
    }
  }
  set<std::pair<int, int> > se;
  G(se, i1, j1, k1);
  G(se, j1, i1, k1);
  G(se, k1, i1, j1);
  for (set<std::pair<int, int> >::iterator it = se.begin(); it != se.end();
       ++it)
    cout << it->first << " " << it->second << endl;
}
void testgen() {
  FILE* f = fopen("input.txt", "w");
  fclose(f);
}
int main() {
  std::cout << std::fixed;
  std::cout.precision(8);
  std::cerr << std::fixed;
  std::cerr.precision(3);
  solve();
  return 0;
}
