#include <bits/stdc++.h>
using namespace std;
struct Point {
  long long x, y;
  Point() {}
  Point(long long x, long long y) : x(x), y(y) {}
  Point operator+(const Point &o) const { return Point(x + o.x, y + o.y); }
  Point operator-(const Point &o) const { return Point(x - o.x, y - o.y); }
  long long operator%(const Point &o) const { return x * o.y - o.x * y; }
  bool operator<(const Point &o) const { return x != o.x ? x < o.x : y < o.y; }
};
long long ccw(Point a, Point b, Point c) { return (b - a) % (c - a); }
int n, m;
long long s;
Point p[5005], h[2 * 5005];
void ch() {
  m = 0;
  h[m++] = p[0];
  for (int i = 1; i < n; i++) {
    while (m > 1 && ccw(h[m - 2], h[m - 1], p[i]) <= 0) m--;
    h[m++] = p[i];
  }
  for (int i = n - 2, mm = m; i >= 0; i--) {
    while (m > mm && ccw(h[m - 2], h[m - 1], p[i]) <= 0) m--;
    h[m++] = p[i];
  }
  m--;
}
int main() {
  cin >> n >> s;
  for (int i = 0; i < n; i++) cin >> p[i].x >> p[i].y;
  sort(p, p + n);
  ch();
  Point a, b, c;
  long long best = 0;
  for (int i = 0; i < m; i++) {
    for (int j = i + 1; j < m; j++) {
      int lo = j + 1, hi = m - 1;
      while (lo < hi) {
        int m1 = (2 * lo + hi) / 3;
        int m2 = (lo + 2 * hi + 2) / 3;
        long long a1 = ccw(h[i], h[j], h[m1]);
        long long a2 = ccw(h[i], h[j], h[m2]);
        if (a1 > a2)
          hi = m2 - 1;
        else
          lo = m1 + 1;
      }
      long long cur = ccw(h[i], h[j], h[lo]);
      if (lo <= hi && cur > best) {
        best = cur;
        a = h[i];
        b = h[j];
        c = h[lo];
      }
    }
  }
  Point aa = a + (b - c);
  Point bb = b + (c - a);
  Point cc = c + (a - b);
  cout << aa.x << " " << aa.y << endl;
  cout << bb.x << " " << bb.y << endl;
  cout << cc.x << " " << cc.y << endl;
}
