#include <bits/stdc++.h>
using namespace std;
pair<long long, long long> pts[5000];
vector<int> CH;
int n;
long long S;
long long ccw(pair<long long, long long> a, pair<long long, long long> b,
              pair<long long, long long> c) {
  return (b.first - a.first) * (c.second - a.second) -
         (b.second - a.second) * (c.first - a.first);
}
void get_hull() {
  for (int i = 0; i < n; i++) {
    while (CH.size() > 1 &&
           ccw(pts[CH[CH.size() - 2]], pts[CH[CH.size() - 1]], pts[i]) >= 0) {
      CH.pop_back();
    }
    CH.push_back(i);
  }
  int half = CH.size();
  for (int i = n - 2; i >= 0; i--) {
    while (CH.size() > half &&
           ccw(pts[CH[CH.size() - 2]], pts[CH[CH.size() - 1]], pts[i]) >= 0) {
      CH.pop_back();
    }
    CH.push_back(i);
  }
  CH.pop_back();
}
long long area(int aa, int bb, int cc) {
  pair<long long, long long> a = pts[CH[aa]], b = pts[CH[bb]], c = pts[CH[cc]];
  return abs(a.first * b.second + b.first * c.second + c.first * a.second -
             a.second * b.first - b.second * c.first - c.second * a.first);
}
int main() {
  if (fopen("test.in", "r")) {
    freopen("test.in", "r", stdin);
  }
  cin >> n >> S;
  for (int i = 0; i < n; i++) {
    cin >> pts[i].first >> pts[i].second;
  }
  sort(pts, pts + n);
  get_hull();
  n = CH.size();
  long long maxx = -1;
  int x1, y1, z1;
  for (int a = 0; a < n - 2; a++) {
    int z = a + 2;
    for (int b = a + 1; b < n - 1; b++) {
      while (z < n - 1 && area(a, b, z + 1) > area(a, b, z)) {
        z++;
      }
      if (area(a, b, z) > maxx) {
        maxx = area(a, b, z);
        x1 = a, y1 = b, z1 = z;
      }
    }
  }
  pair<long long, long long> x = pts[CH[x1]], y = pts[CH[y1]], z = pts[CH[z1]];
  cout << x.first + y.first - z.first << " " << x.second + y.second - z.second
       << '\n';
  cout << y.first + z.first - x.first << " " << y.second + z.second - x.second
       << '\n';
  cout << z.first + x.first - y.first << " " << z.second + x.second - y.second
       << '\n';
  return 0;
}
