#include <bits/stdc++.h>
using namespace std;
const int maxn = 2005;
struct Point {
  long long x;
  long long y;
};
long long Cross(Point a, Point b) { return (a.x * b.y - a.y * b.x); }
Point p[maxn];
long long cal(int a, int b, int c) {
  Point l1, l2;
  l1.x = p[c].x - p[b].x;
  l1.y = p[c].y - p[b].y;
  l2.x = p[c].x - p[a].x;
  l2.y = p[c].y - p[a].y;
  return Cross(l1, l2);
}
struct Line {
  int a;
  int b;
  double k;
};
Line l[maxn * maxn];
int pos[maxn];
int order[maxn];
int n = 0, nl = 0;
long long S;
bool cmp1(int a, int b) {
  if (p[a].x != p[b].x)
    return p[a].x < p[b].x;
  else
    return p[a].y > p[b].y;
}
bool cmp2(Line a, Line b) { return a.k < b.k; }
int judge(int a, int b) {
  int l = 0, r = pos[a];
  while (l != r) {
    int mid = (l + r) / 2;
    if (cal(a, b, order[mid]) > S * 2) {
      l = mid + 1;
    } else {
      r = mid;
    }
  }
  if (cal(a, b, order[l]) == S * 2) {
    return order[l];
  }
  l = pos[a];
  r = n;
  while (l != r) {
    int mid = (l + r) / 2;
    if (cal(a, b, order[mid]) >= S * 2) {
      r = mid;
    } else {
      l = mid + 1;
    }
  }
  if (cal(a, b, order[l]) == S * 2) {
    return order[l];
  }
  return -1;
}
int main() {
  cin >> n >> S;
  for (int i = 0; i < n; i++) {
    scanf("%I64d %I64d", &p[i].x, &p[i].y);
    order[i] = i;
  }
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      l[nl].a = i;
      l[nl].b = j;
      if (p[i].x == p[j].x) {
        l[nl].k = -1e20;
      } else {
        l[nl].k = 1.0 * (p[i].y - p[j].y) / (p[i].x - p[j].x);
      }
      nl++;
    }
  }
  sort(order, order + n, cmp1);
  sort(l, l + nl, cmp2);
  for (int i = 0; i < n; i++) {
    pos[order[i]] = i;
  }
  for (int i = 0; i < nl; i++) {
    int a = l[i].a, b = l[i].b;
    int t = pos[a];
    pos[a] = pos[b];
    pos[b] = t;
    order[pos[a]] = a;
    order[pos[b]] = b;
    int v = judge(a, b);
    if (v != -1) {
      cout << "Yes" << endl;
      cout << p[a].x << ' ' << p[a].y << endl;
      cout << p[b].x << ' ' << p[b].y << endl;
      cout << p[v].x << ' ' << p[v].y << endl;
      return 0;
    }
  }
  cout << "No" << endl;
  return 0;
}
