#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5001;
const int INF = 1e9;
pair<long long, long long> ps[MAXN], conv_hull[MAXN];
int n, m;
pair<long long, long long> o;
inline long long Sabc(pair<long long, long long> a,
                      pair<long long, long long> b,
                      pair<long long, long long> c) {
  return (b.first - a.first) * (c.second - a.second) -
         (b.second - a.second) * (c.first - a.first);
}
inline long long cvabc(int i, int j, int h) {
  return llabs(Sabc(conv_hull[i % m], conv_hull[j % m], conv_hull[h % m]));
}
bool point_comp(pair<long long, long long> p, pair<long long, long long> q) {
  long long s = Sabc(o, p, q);
  if (s != 0) return (s > 0);
  return (llabs(p.first - o.first) < llabs(q.first - o.first));
}
void build_convex_hull() {
  pair<long long, long long> rmp = {-INF, -INF};
  for (pair<long long, long long> p : ps) {
    if (p > rmp) rmp = p;
  }
  o = rmp;
  sort(ps, ps + n, point_comp);
  ps[n] = ps[0];
  conv_hull[m++] = ps[0];
  conv_hull[m++] = ps[1];
  for (int i = 2; i < n; i++) {
    while (m >= 2 && Sabc(conv_hull[m - 2], conv_hull[m - 1], ps[i]) <= 0) {
      m--;
    }
    conv_hull[m++] = ps[i];
  }
}
vector<pair<long long, long long> > find_max_triangle() {
  long long very_biggest_s = 0;
  int a, b, c;
  for (int i = 0; i < m; i++) {
    int k = i + 1;
    for (int j = i + 2; j < i + m; j++) {
      while (cvabc(i, j, k) <= cvabc(i, j, k + 1)) k++;
      long long biggest_s = cvabc(i, j, k);
      if (biggest_s > very_biggest_s) {
        a = i;
        b = j;
        c = k;
        very_biggest_s = biggest_s;
      }
    }
  }
  vector<pair<long long, long long> > ans = {conv_hull[a % m], conv_hull[b % m],
                                             conv_hull[c % m]};
  return ans;
}
int main() {
  clock_t clock_st = clock();
  ios_base::sync_with_stdio(0);
  long long __;
  cin >> n >> __;
  for (int i = 0; i < n; i++) {
    long long _x, _y;
    cin >> _x >> _y;
    ps[i] = make_pair(_x, _y);
  }
  build_convex_hull();
  vector<pair<long long, long long> > max_triangle = find_max_triangle();
  for (int i = 0; i < 3; i++) {
    int ansx = 0, ansy = 0;
    for (int j = 0; j < 3; j++) {
      int sign = (i == j ? -1 : 1);
      ansx += max_triangle[j].first * sign;
      ansy += max_triangle[j].second * sign;
    }
    cout << ansx << " " << ansy << "\n";
  }
  cerr << (double)-(clock_st - clock()) / CLOCKS_PER_SEC << "\n";
  return 0;
}
