#include <bits/stdc++.h>
using namespace std;
long long ccw(pair<long long, long long> a, pair<long long, long long> b,
              pair<long long, long long> c) {
  return a.first * b.second + b.first * c.second + c.first * a.second -
         a.second * b.first - b.second * c.first - c.second * a.first;
}
pair<long long, long long> operator-(pair<long long, long long> &a,
                                     pair<long long, long long> &b) {
  return pair<long long, long long>(a.first - b.first, a.second - b.second);
}
int n;
long long S;
pair<long long, long long> arr[2100];
int ord[2100];
int loc[2100];
vector<pair<int, int> > lis;
void print(int a, int b, int c) {
  printf("Yes\n");
  printf("%lld %lld\n%lld %lld\n%lld %lld\n", arr[a].first, arr[a].second,
         arr[b].first, arr[b].second, arr[c].first, arr[c].second);
  exit(0);
}
int main() {
  int i, j;
  scanf("%d%lld", &n, &S);
  for (i = 0; i < n; i++) scanf("%lld%lld", &arr[i].first, &arr[i].second);
  sort(arr, arr + n);
  for (i = 0; i < n; i++) {
    ord[i] = loc[i] = i;
    for (j = i + 1; j < n; j++) lis.push_back(pair<int, int>(i, j));
  }
  sort(lis.begin(), lis.end(), [](pair<int, int> a, pair<int, int> b) {
    if (ccw(pair<long long, long long>(0, 0), arr[a.second] - arr[a.first],
            arr[b.second] - arr[b.first]) != 0)
      return ccw(pair<long long, long long>(0, 0), arr[a.second] - arr[a.first],
                 arr[b.second] - arr[b.first]) > 0;
    return a < b;
  });
  for (i = 0; i < lis.size(); i++) {
    int a = lis[i].first, b = lis[i].second;
    if (abs(loc[a] - loc[b]) != 1) {
      while (true)
        ;
      return 0;
    }
    int s = max(loc[a], loc[b]) + 1, e = n - 1;
    while (s <= e) {
      int m = (s + e) / 2;
      long long v = abs(ccw(arr[a], arr[b], arr[ord[m]]));
      if (v == 2 * S) print(a, b, ord[m]);
      if (v > 2 * S)
        e = m - 1;
      else
        s = m + 1;
    }
    s = 0, e = min(loc[a], loc[b]) - 1;
    while (s <= e) {
      int m = (s + e) / 2;
      long long v = abs(ccw(arr[a], arr[b], arr[ord[m]]));
      if (v == 2 * S) print(a, b, ord[m]);
      if (v > 2 * S)
        s = m + 1;
      else
        e = m - 1;
    }
    swap(ord[loc[a]], ord[loc[b]]);
    swap(loc[a], loc[b]);
  }
  printf("No\n");
  return 0;
}
