#include <bits/stdc++.h>
using namespace std;
template <typename T>
T read() {
  T cnt = 0, f = 1;
  char ch = 0;
  while (!isdigit(ch)) {
    ch = getchar();
    if (ch == '-') f = -1;
  }
  while (isdigit(ch)) cnt = cnt * 10 + (ch - '0'), ch = getchar();
  return cnt * f;
}
int gi() { return read<int>(); }
long long gl() { return read<long long>(); }
const int N = 2e4 + 50, M = 4e6 + 50;
struct pnt {
  long long x, y;
  pnt(long long _x = 0, long long _y = 0) {
    x = _x;
    y = _y;
  }
  friend pnt operator+(const pnt &a, const pnt &b) {
    return pnt(a.x + b.x, a.y + b.y);
  }
  friend pnt operator-(const pnt &a, const pnt &b) {
    return pnt(a.x - b.x, a.y - b.y);
  }
  friend long long operator*(const pnt &a, const pnt &b) {
    return a.x * b.y - a.y * b.x;
  }
  void output() { cout << x << " " << y << '\n'; }
};
int n;
long long S;
pnt p[N];
int rk[N];
template <typename T>
T Abs(T a) {
  return a < 0 ? -a : a;
}
long long crs(int a, int b, int c) {
  return Abs((p[b] - p[a]) * (p[c] - p[a]));
}
void chk_l(int l, int r, int u, int v) {
  while (l <= r) {
    int mid = (l + r) >> 1;
    long long tmp = crs(rk[u], rk[v], mid);
    if (tmp == S) {
      puts("Yes");
      p[rk[u]].output();
      p[rk[v]].output();
      p[mid].output();
      exit(0);
    }
    if (tmp > S)
      l = mid + 1;
    else
      r = mid - 1;
  }
}
void chk_r(int l, int r, int u, int v) {
  while (l <= r) {
    int mid = (l + r) >> 1;
    long long tmp = crs(rk[u], rk[v], mid);
    if (tmp == S) {
      puts("Yes");
      p[rk[u]].output();
      p[rk[v]].output();
      p[mid].output();
      exit(0);
    }
    if (tmp > S)
      r = mid - 1;
    else
      l = mid + 1;
  }
}
int main() {
  n = gi(), S = gl() * 2;
  for (int i = 1; i <= n; i++) p[i].x = gi(), p[i].y = gi();
  sort(p + 1, p + n + 1, [](const pnt &i, const pnt &j) {
    return i.x < j.x || (i.x == j.x && i.y < j.y);
  });
  static pair<int, int> a[M];
  int c = 0;
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) a[++c] = pair<int, int>(i, j);
  sort(a + 1, a + c + 1, [](const pair<int, int> &i, const pair<int, int> &j) {
    return (p[i.second] - p[i.first]) * (p[j.second] - p[j.first]) > 0;
  });
  for (int i = 1; i <= n; i++) rk[i] = i;
  for (int i = 1; i <= c; i++) {
    int u = a[i].first, v = a[i].second;
    if (rk[u]) chk_l(0, rk[u] - 1, u, v);
    if (rk[v] < n) chk_r(rk[v] + 1, n, u, v);
    swap(rk[u], rk[v]);
    swap(p[rk[u]], p[rk[v]]);
  }
  puts("No");
  return 0;
}
