#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e3 + 14;
double PI = acos((double)-1);
struct pt {
  long long x, y;
};
struct Event {
  int i, j;
  double angle;
} event[maxn * maxn];
int n, sz, order[maxn], where[maxn];
pt a[maxn];
long long s;
double angle(int x, int y) {
  double ret = atan2(y, x);
  return ret < 0 ? ret + 2 * PI : ret;
}
double when(int i, int j) {
  int x = a[i].x - a[j].x, y = a[i].y - a[j].y;
  return angle(-y, x);
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> s;
  s *= 2;
  for (int i = 0; i < n; i++) cin >> a[i].x >> a[i].y;
  sort(a, a + n, [](pt a, pt b) { return a.x != b.x ? a.x < b.x : a.y > b.y; });
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (i != j) event[sz++] = {i, j, when(i, j)};
  sort(event, event + sz, [](Event &f, Event &s) { return f.angle < s.angle; });
  iota(order, order + n, 0);
  iota(where, where + n, 0);
  for_each(event, event + sz, [](Event &p) {
    auto [i, j, tmp] = p;
    swap(order[where[i]], order[where[j]]);
    swap(where[i], where[j]);
    long long la = a[j].y - a[i].y;
    long long lb = a[j].x - a[i].x;
    long long lc = a[j].x * a[i].y - a[j].y * a[i].x;
    auto findDis = [&](int k) {
      return abs(la * a[order[k]].x - lb * a[order[k]].y + lc);
    };
    auto lowerBound = [&](int lo, long long x) {
      int hi = n;
      while (hi - lo > 1) {
        int mid = (lo + hi) / 2;
        (findDis(mid) <= x ? lo : hi) = mid;
      }
      return lo;
    };
    if (findDis(lowerBound(where[i], s)) == s) {
      cout << "Yes\n";
      int k = order[lowerBound(where[i], s)];
      cout << fixed << setprecision(0) << a[i].x << ' ' << a[i].y << '\n'
           << a[j].x << ' ' << a[j].y << '\n'
           << a[k].x << ' ' << a[k].y << '\n';
      exit(0);
    }
  });
  cout << "No\n";
}
