#include <bits/stdc++.h>
using namespace std;
inline long long getint() {
  long long x = 0, p = 1;
  char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') p = -1;
    c = getchar();
  }
  while (isdigit(c)) {
    x = (x << 1) + (x << 3) + (c ^ '0');
    c = getchar();
  }
  return x * p;
}
inline void putint(const int &a) {
  int x = a;
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  static short buf[20];
  short tot = 0;
  do {
    buf[tot++] = x % 10;
    x /= 10;
  } while (x);
  while (tot) putchar(buf[--tot] + '0');
}
inline void putint(const long long &a) {
  long long x = a;
  if (x < 0) {
    putchar('-');
    x = -x;
  }
  static short buf[20];
  short tot = 0;
  do {
    buf[tot++] = x % 10;
    x /= 10;
  } while (x);
  while (tot) putchar(buf[--tot] + '0');
}
struct point {
  double x, y;
  point(double a = 0, double b = 0) : x(a), y(b) {}
  point operator+(const point &b) const { return point(x + b.x, y + b.y); }
  point operator-(const point &b) const { return point(x - b.x, y - b.y); }
  double cross(const point &b) const { return x * b.y - y * b.x; }
} p[100000];
int n, s;
double area(const point &a, const point &b, const point &c) {
  return abs((b - a).cross(c - a));
}
double area(int a, int b, int c) { return area(p[a], p[b], p[c]); }
ostream &operator<<(ostream &out, const point &a) {
  cout << (int)a.x << " " << (int)a.y;
  return out;
}
int main() {
  n = getint(), s = getint();
  for (int i = 1; i <= n; ++i) {
    p[i].x = getint(), p[i].y = getint();
  }
  int a = 1, b = 2, c = 3;
  bool flag = 1;
  while (flag) {
    flag = 0;
    for (int i = 1; i <= n; ++i) {
      if (area(a, b, i) > area(a, b, c)) c = i, flag = 1;
      if (area(a, i, c) > area(a, b, c)) b = i, flag = 1;
      if (area(i, b, c) > area(a, b, c)) a = i, flag = 1;
    }
  }
  point a1 = p[a] + p[b] - p[c], a2 = p[a] + p[c] - p[b],
        a3 = p[c] + p[b] - p[a];
  cout << a1 << endl << a2 << endl << a3;
  return 0;
}
