#include <bits/stdc++.h>
using namespace std;
struct pt {
  int x;
  int y;
  pt() {}
  pt(int x, int y) : x(x), y(y) {}
};
vector<pt> v;
bool comp(const pt &a, const pt &b) {
  return a.x < b.x || (a.x == b.x && a.y < b.y);
}
int ccw(pt &a, pt &b, pt &c) {
  return 1LL * a.x * (b.y - c.y) + 1LL * b.x * (c.y - a.y) +
             1LL * c.x * (a.y - b.y) >
         0;
}
int cw(pt &a, pt &b, pt &c) {
  return 1LL * a.x * (b.y - c.y) + 1LL * b.x * (c.y - a.y) +
             1LL * c.x * (a.y - b.y) <
         0;
}
vector<pt> convex_hull(vector<pt> &v) {
  vector<pt> up;
  vector<pt> down;
  sort(v.begin(), v.end(), comp);
  up.push_back(v[0]);
  down.push_back(v[0]);
  for (int i = 1; i < (int)v.size(); i++) {
    while ((int)up.size() >= 2 &&
           !cw(up[(int)up.size() - 2], up[(int)up.size() - 1], v[i])) {
      up.pop_back();
    }
    while ((int)down.size() >= 2 &&
           !ccw(down[(int)down.size() - 2], down[(int)down.size() - 1], v[i])) {
      down.pop_back();
    }
    up.push_back(v[i]);
    down.push_back(v[i]);
  }
  for (int i = (int)down.size() - 2; i > 0; i--) {
    up.push_back(down[i]);
  }
  return up;
}
long long int area2(pt &a, pt &b, pt &c) {
  return abs(1LL * a.x * (b.y - c.y) + 1LL * b.x * (c.y - a.y) +
             1LL * c.x * (a.y - b.y));
}
vector<pt> max_tri_area(vector<pt> &v) {
  int a = 0;
  int b = 1;
  int c = 2;
  int ba = 0;
  int bb = 1;
  int bc = 2;
  int n = (int)v.size();
  vector<pt> tri;
  while (1) {
    while (1) {
      while (area2(v[a], v[b], v[c]) <= area2(v[a], v[b], v[(c + 1) % n])) {
        c = (c + 1) % n;
      }
      if (area2(v[a], v[b], v[c]) <= area2(v[a], v[(b + 1) % n], v[c])) {
        b = (b + 1) % n;
      } else {
        break;
      }
    }
    if (area2(v[a], v[b], v[c]) > area2(v[ba], v[bb], v[bc])) {
      ba = a;
      bb = b;
      bc = c;
    }
    a = (a + 1) % n;
    if (a == b) {
      b = (b + 1) % n;
    }
    if (b == c) {
      c = (c + 1) % n;
    }
    if (a == 0) {
      break;
    }
  }
  tri.push_back(v[ba]);
  tri.push_back(v[bb]);
  tri.push_back(v[bc]);
  return tri;
}
int main(void) {
  int n;
  int x, y;
  scanf(" %d %*d", &n);
  for (int i = 0; i < n; i++) {
    scanf(" %d %d", &x, &y);
    v.push_back(pt(x, y));
  }
  v = convex_hull(v);
  v = max_tri_area(v);
  int ax = v[0].x;
  int ay = v[0].y;
  int bx = v[1].x;
  int by = v[1].y;
  int cx = v[2].x;
  int cy = v[2].y;
  printf("%d %d\n", ax + bx - cx, ay + by - cy);
  printf("%d %d\n", bx + cx - ax, by + cy - ay);
  printf("%d %d\n", cx + ax - bx, cy + ay - by);
  return 0;
}
