#include <iostream> #include <cmath> #include <queue> using namespace std ; //ifstream cin ("input") ; //ofstream cout ("output") ; int x_boss, y_boss ; class cmp { public : bool operator () (const pair <int, int> &A, const pair <int, int> &B) { if (dist (make_pair(x_boss, y_boss), A) != dist (make_pair(x_boss, y_boss), B)) { return dist (make_pair(x_boss, y_boss), A) > dist (make_pair(x_boss, y_boss), B) ; } return A > B ; } private : int sq (int A) { return A * A ; } int dist (const pair<int, int> &A, const pair <int, int> &B) { return sq (A.first - B.first) + sq (A.second - B.second) ; } }; priority_queue <pair<int, int>, vector<pair<int, int>>, cmp> H ; int main(int argc, char const *argv[]) { int n, k; cin >> n >> k ; cin >> x_boss >> y_boss ; for (int i = 1 ; i <= n ; ++ i) { int x, y ; cin >> x >> y ; H.push ({x, y}) ; } while (k --) { cout << H.top().first << ' ' << H.top().second << '\n' ; H.pop() ; } return 0; }