#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<ll, ll>;
using pci = pair<char, ll>;
mt19937 rnd(5512365);
const ll inf = 1e9 + 7;
template <class T>
using vec = vector<T>;
const ld pi = atan2(0, -1);
struct point {
  ll x, y;
  point() { x = 0, y = 0; }
  point(ll a, ll b) { x = a, y = b; }
};
struct Vector {
  ll x, y;
  Vector() { x = 0, y = 0; }
  Vector(point a, point b) {
    x = b.x - a.x;
    y = b.y - a.y;
  }
};
ll skal(Vector a, Vector b) { return (a.x * b.x + a.y * b.y); }
ll vect(Vector a, Vector b) { return (a.x * b.y - a.y * b.x); }
point minp;
bool cmp(point& a, point& b) {
  Vector a1 = Vector(minp, a);
  Vector b1 = Vector(minp, b);
  if (vect(a1, b1) == 0) {
    return skal(a1, a1) < skal(b1, b1);
  }
  return vect(a1, b1) > 0;
}
vector<point> ans;
vector<point> a;
bool ok(ll i) {
  point C = a[i];
  point B = ans.back();
  point A = ans[ans.size() - 2];
  Vector AB(A, B), BC(B, C);
  return vect(AB, BC) <= 0;
}
void solv() {
  ll cur = 0;
  for (ll i = 1; i < a.size(); ++i) {
    if (a[i].x < a[cur].x || (a[i].x == a[cur].x && a[i].y < a[cur].y)) {
      cur = i;
    }
  }
  minp = a[cur];
  sort(a.begin(), a.end(), cmp);
  ans.push_back(a[0]);
  ans.push_back(a[1]);
  for (ll i = 2; i < a.size(); ++i) {
    while (ans.size() > 1 && ok(i)) {
      ans.pop_back();
    }
    ans.push_back(a[i]);
  }
}
ll area(point _a, point b, point c) {
  return abs((b.x - _a.x) * (c.y - _a.y) - (c.x - _a.x) * (b.y - _a.y));
}
void solve(ll numtest) {
  ll n, S;
  cin >> n >> S;
  a.resize(n);
  for (ll i = 0; i < n; ++i) {
    cin >> a[i].x >> a[i].y;
  }
  solv();
  n = ans.size();
  a = ans;
  deque<point> cur;
  for (auto elem : a) {
    cur.push_back(elem);
  }
  ll a = 0, b = 1, c = 2;
  while (1) {
    bool g = 1;
    for (ll i = 0; i < n; ++i) {
      if (area(cur[i], cur[b], cur[c]) > area(cur[a], cur[b], cur[c]))
        a = i, g = 0;
      if (area(cur[a], cur[i], cur[c]) > area(cur[a], cur[b], cur[c]))
        b = i, g = 0;
      if (area(cur[a], cur[b], cur[i]) > area(cur[a], cur[b], cur[c]))
        c = i, g = 0;
    }
    if (g) break;
  }
  point A0 = cur[a], B0 = cur[b], C0 = cur[c];
  point A1, B1, C1;
  {
    Vector r1(A0, B0);
    Vector r2(A0, C0);
    r1.x += r2.x;
    r1.y += r2.y;
    A1.x = A0.x + r1.x;
    A1.y = A0.y + r1.y;
  }
  {
    Vector r1(B0, C0);
    Vector r2(B0, A0);
    r1.x += r2.x;
    r1.y += r2.y;
    B1.x = B0.x + r1.x;
    B1.y = B0.y + r1.y;
  }
  {
    Vector r1(C0, B0);
    Vector r2(C0, A0);
    r1.x += r2.x;
    r1.y += r2.y;
    C1.x = C0.x + r1.x;
    C1.y = C0.y + r1.y;
  }
  cout << A1.x << ' ' << A1.y << '\n';
  cout << B1.x << ' ' << B1.y << '\n';
  cout << C1.x << ' ' << C1.y << '\n';
  if (S == 15880) {
  }
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ll tt = 1;
  cout << fixed << setprecision(10);
  for (ll test = 0; test < tt; ++test) {
    solve(test + 1);
  }
  return 0;
}
