#include <bits/stdc++.h>
using namespace std;
long long n, S, top, pos[2005], id[2005];
struct point {
  long long x, y;
} a[2005];
struct line {
  long long x, y;
  double k;
} b[4000005];
inline bool cmp1(point A, point B) {
  return A.x != B.x ? A.x < B.x : A.y < B.y;
}
inline bool cmp2(line A, line B) { return A.k < B.k; }
inline long long cross(point A, point B) {
  return abs((A.x * B.y) - (B.x * A.y));
}
inline point operator-(point A, point B) {
  return (point){A.x - B.x, A.y - B.y};
}
inline long long getS(point A, point B, point C) {
  return abs(cross(B - A, C - A));
}
inline long long read() {
  long long ret = 0, ff = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') ff = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    ret = (ret << 3) + (ret << 1) + (ch ^ 48);
    ch = getchar();
  }
  return ret * ff;
}
signed main() {
  n = read();
  S = read() * 2;
  for (long long i = 1; i <= n; i++) {
    a[i].x = read();
    a[i].y = read();
    pos[i] = id[i] = i;
  }
  sort(a + 1, a + n + 1, cmp1);
  for (long long i = 1; i <= n; i++)
    for (long long j = i + 1; j <= n; j++)
      b[++top] =
          (line){i, j, atan2((double)(a[j] - a[i]).y, (double)(a[j] - a[i]).x)};
  sort(b + 1, b + top + 1, cmp2);
  for (long long i = 1; i <= top; i++) {
    long long x = b[i].x, y = b[i].y;
    if (pos[x] > pos[y]) swap(x, y);
    long long l, r, t;
    l = 1, r = pos[x] - 1;
    while (l <= r) {
      long long mid = (l + r) >> 1;
      if (getS(a[id[mid]], a[x], a[y]) >= S)
        l = mid + 1, t = mid;
      else
        r = mid - 1;
    }
    if (getS(a[id[t]], a[x], a[y]) == S) {
      puts("Yes");
      printf("%lld %lld\n", a[id[t]].x, a[id[t]].y);
      printf("%lld %lld\n", a[x].x, a[x].y);
      printf("%lld %lld\n", a[y].x, a[y].y);
      return 0;
    }
    l = pos[y] + 1, r = n;
    while (l <= r) {
      long long mid = (l + r) >> 1;
      if (getS(a[id[mid]], a[x], a[y]) >= S)
        r = mid - 1, t = mid;
      else
        l = mid + 1;
    }
    if (getS(a[id[t]], a[x], a[y]) == S) {
      puts("Yes");
      printf("%lld %lld\n", a[id[t]].x, a[id[t]].y);
      printf("%lld %lld\n", a[x].x, a[x].y);
      printf("%lld %lld\n", a[y].x, a[y].y);
      return 0;
    }
    swap(pos[x], pos[y]);
    swap(id[pos[x]], id[pos[y]]);
  }
  printf("No");
  return 0;
}
