#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int MAXN = 1e5 + 5;
pair<long long, long long> origin;
pair<long long, long long> operator-(pair<long long, long long> A,
                                     pair<long long, long long> B) {
  return pair<long long, long long>(A.first - B.first, A.second - B.second);
}
pair<long long, long long> operator+(pair<long long, long long> A,
                                     pair<long long, long long> B) {
  return pair<long long, long long>(A.first + B.first, A.second + B.second);
}
void operator-=(pair<long long, long long> &A, pair<long long, long long> B) {
  A.first -= B.first;
  A.second -= B.second;
}
bool ccw(pair<long long, long long> O, pair<long long, long long> A,
         pair<long long, long long> B) {
  A -= O;
  B -= O;
  return 1LL * A.first * B.second > 1LL * A.second * B.first;
}
bool cmp(pair<long long, long long> A, pair<long long, long long> B) {
  return ccw(origin, A, B);
}
long long area(pair<long long, long long> A, pair<long long, long long> B,
               pair<long long, long long> C) {
  return abs(((B.first - A.first) * (C.second - A.second) -
              (C.first - A.first) * (B.second - A.second)));
}
vector<pair<long long, long long> > hull;
int next(int u) { return (u + 1) % hull.size(); }
int n;
long long S;
pair<long long, long long> a[MAXN];
int main() {
  cin >> n >> S;
  for (int i = 1; i <= n; ++i) cin >> a[i].first >> a[i].second;
  sort(a + 1, a + n + 1);
  origin = a[1];
  sort(a + 2, a + n + 1, cmp);
  a[0] = a[n];
  a[n + 1] = a[1];
  for (int i = 1; i <= n + 1; ++i) {
    while (hull.size() >= 2 &&
           !ccw(hull[hull.size() - 2], hull[hull.size() - 1], a[i]))
      hull.pop_back();
    hull.push_back(a[i]);
  }
  hull.pop_back();
  pair<long long, long long> A, B, C;
  long long ans = 0;
  for (int L = 0; L < hull.size(); ++L) {
    int M = next(L);
    for (int R = next(next(L)); R != L; R = next(R)) {
      while (next(M) != R && area(hull[L], hull[next(M)], hull[R]) >
                                 area(hull[L], hull[M], hull[R]))
        M = next(M);
      if (ans < area(hull[L], hull[M], hull[R])) {
        ans = area(hull[L], hull[M], hull[R]);
        A = hull[L];
        B = hull[M];
        C = hull[R];
      }
    }
  }
  pair<long long, long long> X = (A + B) - C;
  pair<long long, long long> Y = (B + C) - A;
  pair<long long, long long> Z = (A + C) - B;
  cout << X.first << " " << X.second << endl;
  cout << Y.first << " " << Y.second << endl;
  cout << Z.first << " " << Z.second << endl;
  return 0;
}
