#include <bits/stdc++.h>
using namespace std;
const int MAX = 5010;
int n;
unsigned long long s;
pair<int, int> a[MAX];
int o;
int a1, b1, a2, b2, a3, b3, x1, ewujfoilejw, x2, y2, x3, y3;
void operator-=(pair<int, int>& a, const pair<int, int>& o) {
  a.first -= o.first;
  a.second -= o.second;
}
long long cross_product(const pair<int, int>& o, pair<int, int> a,
                        pair<int, int> b) {
  a -= o;
  b -= o;
  return (long long)a.first * b.second - (long long)a.second * b.first;
}
bool ccw(const pair<int, int>& o, const pair<int, int>& a,
         const pair<int, int>& b) {
  return cross_product(o, a, b) > 0;
}
bool cmp(const pair<int, int>& p1, const pair<int, int>& p2) {
  return ccw(a[0], p1, p2);
}
void init() {
  ios_base::sync_with_stdio(false);
  cin >> n >> s;
  for (int i = 0; i < n; i++) {
    cin >> a[i].first >> a[i].second;
    if (a[i].first < a[o].first ||
        (a[i].first == a[o].first && a[i].second < a[o].second))
      o = i;
  }
  swap(a[0], a[o]);
  sort(a + 1, a + n, cmp);
  a[n++] = a[0];
}
void graham_scan() {
  int j = 1;
  for (int i = 2; i < n; i++) {
    while (j > 1 && !ccw(a[j - 1], a[j], a[i])) j--;
    a[++j] = a[i];
  }
  n = j;
}
long long area(const pair<int, int>& a, const pair<int, int>& b,
               const pair<int, int>& c) {
  return abs(cross_product(a, b, c));
}
void find_largest_triangle() {
  int x = 0, y = 1, z = 2, bx = x, by = y, bz = z;
  while (true) {
    while (true) {
      while (area(a[x], a[y], a[z]) <= area(a[x], a[y], a[(z + 1) % n]))
        z = (z + 1) % n;
      if (area(a[x], a[y], a[z]) <= area(a[x], a[y + 1], a[z]))
        y = (y + 1) % n;
      else
        break;
    }
    if (area(a[x], a[y], a[z]) > area(a[bx], a[by], a[bz])) {
      bx = x;
      by = y;
      bz = z;
    }
    x = (x + 1) % n;
    if (x == y) y++;
    if (y == z) z++;
    if (x == 0) break;
  }
  a1 = a[bx].first;
  b1 = a[bx].second;
  a2 = a[by].first;
  b2 = a[by].second;
  a3 = a[bz].first;
  b3 = a[bz].second;
}
void find_requested_triangle() {
  int s = a1 + a2 + a3;
  x1 = s - 2 * a2;
  x2 = s - 2 * a3;
  x3 = s - 2 * a1;
  s = b1 + b2 + b3;
  ewujfoilejw = s - 2 * b2;
  y2 = s - 2 * b3;
  y3 = s - 2 * b1;
  cout << x1 << " " << ewujfoilejw << '\n'
       << x2 << " " << y2 << '\n'
       << x3 << " " << y3;
}
int main() {
  init();
  graham_scan();
  find_largest_triangle();
  find_requested_triangle();
}
