#include <bits/stdc++.h>
using namespace std;
template <class T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
bool chmin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return true;
  }
  return false;
}
const int mod = 1000000007, MAX = 2005;
const long long INF = 1LL << 60;
vector<pair<long long, long long>> P;
bool compare(pair<int, int> i, pair<int, int> j) {
  pair<long long, long long> a =
      make_pair(P[i.second].first - P[i.first].first,
                P[i.second].second - P[i.first].second);
  pair<long long, long long> b =
      make_pair(P[j.second].first - P[j.first].first,
                P[j.second].second - P[j.first].second);
  int at, bt;
  if (a.first > 0 || (a.first == 0 && a.second > 0))
    at = 0;
  else
    at = 1;
  if (b.first > 0 || (b.first == 0 && b.second > 0))
    bt = 0;
  else
    bt = 1;
  if (at != bt) return at < bt;
  return a.first * b.second - a.second * b.first < 0;
}
long long f(int i, int j, int k) {
  pair<long long, long long> a =
      make_pair(P[j].first - P[i].first, P[j].second - P[i].second);
  pair<long long, long long> b =
      make_pair(P[k].first - P[i].first, P[k].second - P[i].second);
  return -(a.first * b.second - a.second * b.first);
}
void output(int i) { cout << P[i].first << " " << P[i].second << endl; }
int main() {
  std::ifstream in("text.txt");
  std::cin.rdbuf(in.rdbuf());
  cin.tie(0);
  ios::sync_with_stdio(false);
  int N;
  cin >> N;
  long long S;
  cin >> S;
  S *= 2;
  P.resize(N);
  for (int i = 0; i < N; i++) {
    cin >> P[i].first >> P[i].second;
  }
  sort((P).begin(), (P).end());
  vector<pair<int, int>> id;
  for (int i = 0; i < N; i++) {
    for (int j = i + 1; j < N; j++) {
      id.push_back(make_pair(i, j));
    }
  }
  sort((id).begin(), (id).end(), compare);
  vector<int> A(N), pos(N);
  iota((A).begin(), (A).end(), 0);
  iota((pos).begin(), (pos).end(), 0);
  for (auto x : id) {
    int i = x.first, j = x.second;
    swap(A[i], A[j]);
    swap(pos[A[i]], pos[A[j]]);
    int left = A[i], right = N;
    while (right - left > 1) {
      int mid = (left + right) / 2;
      long long T = f(i, j, pos[mid]);
      if (T <= S)
        left = mid;
      else
        right = mid;
    }
    if (left < N && f(i, j, pos[left]) == S) {
      cout << "Yes" << endl;
      output(i);
      output(j);
      output(pos[left]);
      return 0;
    }
  }
  cout << "No" << endl;
}
