#include <bits/stdc++.h>
using namespace std;
const int maxn = 2100;
struct point {
  long long x, y;
  point(long long _x = 0, long long _y = 0) {
    x = _x;
    y = _y;
  }
};
struct segment {
  point p;
  point p1, p2;
  int id1, id2;
};
long long operator*(const point& a, const point& b) {
  return a.x * b.y - a.y * b.x;
}
long long operator*(const segment& a, const segment& b) { return a.p * b.p; }
point operator-(const point& a, const point& b) {
  return point(a.x - b.x, a.y - b.y);
}
bool cmp1(const point& a, const point& b) {
  if (a.y != b.y) return a.y < b.y;
  return a.x < b.x;
}
bool cmp2(const segment& a, const segment& b) { return a * b > 0; }
point p[maxn];
segment a[maxn * maxn];
int loc[maxn];
int main(int argc, char* argv[]) {
  int n;
  long long s;
  cin >> n >> s;
  s *= 2;
  for (int i = 1; i <= n; ++i) {
    cin >> p[i].x >> p[i].y;
  }
  sort(p + 1, p + n + 1, cmp1);
  for (int i = 1; i <= n; ++i) {
    loc[i] = i;
  }
  int siz = 0;
  for (int i = 1; i <= n; ++i) {
    for (int j = i + 1; j <= n; ++j) {
      a[++siz].p = p[i] - p[j];
      a[siz].p1 = p[i];
      a[siz].p2 = p[j];
      a[siz].id1 = i;
      a[siz].id2 = j;
    }
  }
  sort(a + 1, a + siz + 1, cmp2);
  for (int i = 1; i <= siz; ++i) {
    int l = 1;
    int r = loc[a[i].id1] - 1;
    while (l <= r) {
      int mid = (l + r) >> 1;
      long long area =
          abs(a[i].p1 * a[i].p2 + a[i].p2 * p[mid] + p[mid] * a[i].p1);
      if (area == s) {
        cout << "Yes\n";
        cout << a[i].p1.x << " " << a[i].p1.y << endl;
        cout << a[i].p2.x << " " << a[i].p2.y << endl;
        cout << p[mid].x << " " << p[mid].y << endl;
        return 0;
      } else if (area > s) {
        l = mid + 1;
      } else {
        r = mid - 1;
      }
    }
    l = loc[a[i].id2] + 1;
    r = n;
    while (l <= r) {
      int mid = (l + r) >> 1;
      long long area =
          abs(a[i].p1 * a[i].p2 + a[i].p2 * p[mid] + p[mid] * a[i].p1);
      if (area == s) {
        cout << "Yes\n";
        cout << a[i].p1.x << " " << a[i].p1.y << endl;
        cout << a[i].p2.x << " " << a[i].p2.y << endl;
        cout << p[mid].x << " " << p[mid].y << endl;
        return 0;
      } else if (area > s) {
        r = mid - 1;
      } else {
        l = mid + 1;
      }
    }
    swap(p[loc[a[i].id1]], p[loc[a[i].id2]]);
    swap(loc[a[i].id1], loc[a[i].id2]);
  }
  cout << "No\n";
  return 0;
}
