#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC optimize(3)
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#pragma GCC target("sse3", "sse2", "sse")
#pragma GCC target("avx", "sse4", "sse4.1", "sse4.2", "ssse3")
#pragma GCC target("f16c")
#pragma GCC optimize("inline", "fast-math", "unroll-loops", \
                     "no-stack-protector")
#pragma GCC push_options
#pragma GCC pop_options
#pragma GCC reset_options
#pragma GCC optimize("O3")
const double eps = 1e-9;
const int INFMEM = 63;
const int INF = 1061109567;
const long long LINF = 4557430888798830399LL;
const double DINF = numeric_limits<double>::infinity();
const long long MOD = 1000000007;
const int dx[8] = {1, 0, -1, 0, 1, 1, -1, -1};
const int dy[8] = {0, 1, 0, -1, 1, -1, 1, -1};
const double PI = 3.141592653589793;
inline void fastll(long long &input_number) {
  input_number = 0;
  int ch = getchar_unlocked();
  int sign = 1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') sign = -1;
    ch = getchar_unlocked();
  }
  while (ch >= '0' && ch <= '9') {
    input_number = (input_number << 3) + (input_number << 1) + ch - '0';
    ch = getchar_unlocked();
  }
  input_number *= sign;
}
inline void open(string a) {
  freopen((a + ".in").c_str(), "r", stdin);
  freopen((a + ".out").c_str(), "w", stdout);
}
inline void fasterios() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
}
long long t, n, s;
struct point {
  long long x, y;
  bool operator<(const point &other) const {
    if (x != other.x) return x < other.x;
    return y < other.y;
  }
};
struct triangle {
  point a, b, c;
  long long area;
  bool operator<(const triangle &other) const { return area < other.area; }
  triangle() {
    a = {0, 0};
    b = {0, 0};
    c = {0, 0};
    area = 0;
  }
  triangle(point aa, point bb, point cc) {
    a = aa;
    b = bb;
    c = cc;
    area = (a.x * b.y + b.x * c.y + c.x * a.y) -
           (a.y * b.x + b.y * c.x + c.y * a.x);
    area = abs(area);
  }
};
point pivot;
point isi[5005];
vector<point> ch;
long long solve(point p, point q, point r) {
  long long cross = (r.x - q.x) * (p.y - q.y) - (r.y - q.y) * (p.x - q.x);
  if (cross == 0)
    return 0;
  else if (cross < 0)
    return -1;
  else
    return 1;
}
long long dist(point a, point b) {
  return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y);
}
bool cmp(point a, point b) {
  long long dir = solve(pivot, a, b);
  if (dir == 0) return dist(pivot, a) < dist(pivot, b);
  return (dir == -1);
}
void print(triangle other) {
  cout << "This triangle has " << '\n';
  cout << other.a.x << " " << other.a.y << '\n';
  cout << other.b.x << " " << other.b.y << '\n';
  cout << other.c.x << " " << other.c.y << '\n';
  cout << "With area " << other.area / 2;
  if (other.area & 1) cout << ".5";
  cout << '\n';
}
void printans(triangle ans) {
  point aa = {-ans.a.x + ans.b.x + ans.c.x, -ans.a.y + ans.b.y + ans.c.y};
  point bb = {ans.a.x - ans.b.x + ans.c.x, ans.a.y - ans.b.y + ans.c.y};
  point cc = {ans.a.x + ans.b.x - ans.c.x, ans.a.y + ans.b.y - ans.c.y};
  cout << aa.x << " " << aa.y << '\n';
  cout << bb.x << " " << bb.y << '\n';
  cout << cc.x << " " << cc.y << '\n';
}
int main() {
  cin >> n >> s;
  for (int i = 1; i <= n; i++) {
    cin >> isi[i].x >> isi[i].y;
    if (i == 1) pivot = isi[i];
    pivot = min(pivot, isi[i]);
  }
  sort(isi + 1, isi + 1 + n, cmp);
  ch.clear();
  for (int i = 1; i <= n; i++) {
    while (ch.size() >= 2) {
      long long blkg = ch.size();
      blkg--;
      if (solve(ch[blkg - 1], ch[blkg], isi[i]) <= 0) break;
      ch.pop_back();
    }
    ch.push_back(isi[i]);
  }
  n = ch.size();
  triangle maksi;
  for (int i = 0; i < n; i++) {
    long long kiri = i + 1;
    for (int j = i + 2; j < n; j++) {
      triangle cur = triangle(ch[i], ch[kiri], ch[j]);
      long long kanan = j - 1;
      for (; kiri < kanan; kiri++) {
        triangle nx = triangle(ch[i], ch[kiri + 1], ch[j]);
        if (nx < cur) break;
        cur = nx;
      }
      if (maksi < cur) maksi = cur;
    }
  }
  printans(maksi);
  return 0;
}
