#include <bits/stdc++.h>
#pragma GCC optimize(3)
#pragma GCC diagnostic ignored "-Wunused-result"
#pragma GCC optimize("Ofast,no-stack-protector,inline")
#pragma GCC target("avx")
const int _B = 4e5;
inline char Nc() {
  static char buf[_B], *p = buf, *q = buf;
  return ((p == q) && (q = buf + fread(buf, 1, _B, stdin)) == (p = buf))
             ? EOF
             : *(p++);
}
inline long long Read() {
  char ch;
  short f = 1;
  while (!std::isdigit(ch = Nc()))
    if (ch == '-') f = -1;
  long long sum = ch - 48;
  while (std::isdigit(ch = Nc())) sum = sum * 10 + ch - 48;
  return sum * f;
}
int n, x[2000], y[2000];
long long S, xr[2000][2000];
inline long long Cross(const int &x1, const int &y1, const int &x2,
                       const int &y2) {
  return 1ll * x1 * y2 - 1ll * x2 * y1;
}
int main() {
  n = Read(), S = Read() << 1;
  for (int i = 0; i < n; ++i) x[i] = Read(), y[i] = Read();
  for (int i = 0; i < n; ++i)
    for (int j = i + 1; j < n; ++j)
      xr[i][j] = xr[j][i] = Cross(x[i], y[i], x[j], y[j]);
  for (int i = 0; i < n; ++i)
    for (int j = i + 1; j < n; ++j) {
      long long x1 = S - xr[i][j], x2 = -S - xr[i][j];
      for (int k = j + 1; k < n; ++k) {
        long long x3 = xr[j][k] - xr[i][k];
        if (x1 == x3 || x2 == x3) {
          puts("Yes");
          printf("%d %d\n", x[i], y[i]);
          printf("%d %d\n", x[j], y[j]);
          printf("%d %d\n", x[k], y[k]);
          return 0;
        }
      }
    }
  puts("No");
}
