#include <bits/stdc++.h>
using namespace std;
long long int area(pair<long long int, long long int> p1,
                   pair<long long int, long long int> p2,
                   pair<long long int, long long int> p3) {
  return p1.first * (p2.second - p3.second) -
         p1.second * (p2.first - p3.first) +
         1 * (p2.first * p3.second - p3.first * p2.second);
}
vector<pair<long long int, long long int> > convexhull(
    vector<pair<long long int, long long int> > v) {
  vector<pair<long long int, long long int> > hull;
  if (v.size() < 3) return hull;
  sort((v).begin(), (v).end(),
       [](const pair<long long int, long long int>& a,
          const pair<long long int, long long int>& b) {
         if (a.second != b.second)
           return a.second < b.second;
         else
           return a.first < b.first;
       });
  pair<long long int, long long int> p = v[0];
  vector<pair<long long int, long long int> > q;
  for (int i = 1; i < v.size(); i++) {
    q.push_back(v[i]);
  }
  sort((q).begin(), (q).end(),
       [p](const pair<long long int, long long int>& a,
           const pair<long long int, long long int>& b) {
         if (area(a, p, b) < 0ll) {
           return true;
         } else if (area(a, p, b) > 0ll) {
           return false;
         } else {
           return (p.first - a.first) * (p.first - a.first) +
                      (p.second - a.second) * (p.second - a.second) <
                  (p.first - b.first) * (p.first - b.first) +
                      (p.second - b.second) * (p.second - b.second);
         }
       });
  if ((q[0].second - p.second) * (q[q.size() - 1].first - p.first) ==
      (q[q.size() - 1].second - p.second) * (q[0].first - p.first)) {
    return hull;
  }
  hull.push_back(p);
  for (int i = 0; i < (int)(q.size()); ++i) {
    if ((q[i].second - p.second) * (q[0].first - p.first) ==
        (q[0].second - p.second) * (q[i].first - p.first)) {
      if (q[i] == hull[hull.size() - 1]) continue;
      hull.push_back(q[i]);
    } else if ((q[i].second - p.second) * (q[q.size() - 1].first - p.first) ==
               (q[q.size() - 1].second - p.second) * (q[i].first - p.first)) {
      continue;
    } else {
      while ((q[i].second - p.second) * (q[i + 1].first - p.first) ==
             (q[i + 1].second - p.second) * (q[i].first - p.first)) {
        i++;
      }
      hull.push_back(q[i]);
    }
  }
  int j = q.size() - 1;
  do {
    if (q[j] != hull[hull.size() - 1]) {
      hull.push_back(q[j]);
    }
    j--;
  } while ((q[j].second - p.second) * (q[j + 1].first - p.first) ==
           (q[j + 1].second - p.second) * (q[j].first - p.first));
  stack<pair<long long int, long long int> > st;
  st.push(hull[0]);
  st.push(hull[1]);
  st.push(hull[2]);
  for (int i = 3; i < hull.size(); i++) {
    pair<long long int, long long int> p3 = hull[i];
    pair<long long int, long long int> p2 = st.top();
    st.pop();
    pair<long long int, long long int> p1 = st.top();
    long long int orientationval =
        p1.first * (p2.second - p3.second) - p1.second * (p2.first - p3.first) +
        1 * (p2.first * p3.second - p3.first * p2.second);
    while (orientationval < 0) {
      p2 = p1;
      st.pop();
      p1 = st.top();
      orientationval = p1.first * (p2.second - p3.second) -
                       p1.second * (p2.first - p3.first) +
                       1 * (p2.first * p3.second - p3.first * p2.second);
    }
    st.push(p2);
    st.push(p3);
    stack<pair<long long int, long long int> > st2;
    while (st.size()) {
      st2.push(st.top());
      st.pop();
    }
    while (st2.size()) {
      st.push(st2.top());
      st2.pop();
    }
  }
  vector<pair<long long int, long long int> > convex_hull;
  stack<pair<long long int, long long int> > st2;
  while (st.size()) {
    st2.push(st.top());
    st.pop();
  }
  while (st2.size()) {
    convex_hull.push_back(st2.top());
    st2.pop();
  }
  return convex_hull;
}
void solve() {
  int n;
  cin >> n;
  long long int s;
  cin >> s;
  vector<pair<long long int, long long int> > v1(n);
  for (int i = 0; i < (int)(n); ++i) {
    cin >> v1[i].first >> v1[i].second;
  }
  vector<pair<long long int, long long int> > v = convexhull(v1);
  assert(v.size() > 0);
  long long int maxarea = -1ll;
  pair<long long int, long long int> p1, p2, p3;
  bool fl = false;
  for (int i = 0; i < (int)(v.size()); ++i) {
    for (int j = i + 2; j < v.size(); j++) {
      int l = i + 1;
      int r = j - 1;
      int mid;
      while (true) {
        mid = (l + r) / 2;
        if (abs(area(v[i], v[j], v[mid])) >=
                abs(area(v[i], v[j], v[mid - 1])) &&
            abs(area(v[i], v[j], v[mid])) >= abs(area(v[i], v[j], v[mid + 1])))
          break;
        else if (abs(area(v[i], v[j], v[mid])) >=
                     abs(area(v[i], v[j], v[mid - 1])) &&
                 abs(area(v[i], v[j], v[mid])) <=
                     abs(area(v[i], v[j], v[mid + 1])))
          l = mid + 1;
        else
          r = mid - 1;
      }
      if (v.size() < 500) {
        vector<long long int> ars(j - i + 1);
        for (int k = i; k <= j; k++) {
          ars[k - i] = abs(area(v[i], v[j], v[k]));
          assert(abs(area(v[i], v[j], v[mid])) >= abs(area(v[i], v[j], v[k])));
        }
        int maxi = i;
        while (abs(area(v[i], v[j], v[maxi + 1])) >=
               abs(area(v[i], v[j], v[maxi])))
          maxi++;
        int minj = j;
        while (abs(area(v[i], v[j], v[minj])) <=
               abs(area(v[i], v[j], v[minj - 1])))
          minj--;
        assert(maxi >= minj);
      }
      if (abs(area(v[i], v[j], v[mid])) > maxarea) {
        fl = true;
        maxarea = abs(area(v[i], v[j], v[mid]));
        p1 = v[i];
        p2 = v[j];
        p3 = v[mid];
      }
    }
  }
  assert(fl);
  cout << (p1.first + p2.first - p3.first) << ' '
       << (p1.second + p2.second - p3.second) << endl;
  cout << (p1.first - p2.first + p3.first) << ' '
       << (p1.second - p2.second + p3.second) << endl;
  cout << (p2.first + p3.first - p1.first) << ' '
       << (p2.second + p3.second - p1.second) << endl;
}
int main() {
  std::ios::sync_with_stdio(false);
  cin.tie(0);
  cout.precision(10);
  cout << fixed;
  int T = 1;
  while (T--) {
    solve();
  }
  return 0;
}
