#include <iostream>
#include <math.h>
using namespace std;
float dist(int Xa, int Ya, int Xb, int Yb){
    int sq1 = Xb-Xa;
    int sq2 = Yb-Ya;
    return sqrt(sq1*sq1 + sq2*sq2);
}
bool lg(int Xa, int Ya, int Xb, int Yb){
    if(Xa < Xb) return 0;
    else if(Xa > Xb) return 1;
    else{
        if(Ya < Yb) return 0;
        else return 1;
    }
}
int main(){
    int n, Xboss, Yboss, k, bk = 0;
    cin >> n >> k >> Xboss >> Yboss;
    int closestPoints[k+1][3]; /// 0- dist 1- x, 2- y
    for(int i = 0; i < n; ++i){
        int Xa, Ya, cDist;
        cin >> Xa >> Ya;
        cDist = dist(Xboss,Yboss,Xa,Ya);
        int j = bk;
        while(j > 0 && (cDist < closestPoints[j-1][0] || (cDist == closestPoints[j-1][0] && lg(closestPoints[j-1][1],closestPoints[j-1][2], Xa,Ya) ) ) ){
            closestPoints[j][0] = closestPoints[j-1][0];
            closestPoints[j][1] = closestPoints[j-1][1];
            closestPoints[j][2] = closestPoints[j-1][2];
            j--;
        }
            closestPoints[j][0] = cDist;
            closestPoints[j][1] = Xa;
            closestPoints[j][2] = Ya;
            if(bk < k) bk++;
    }
    for(int i = 0; i < k-1; ++i){
        cout << closestPoints[i][1] << " " << closestPoints[i][2]<< endl;
    }
    cout << closestPoints[k-1][1] << " " << closestPoints[k-1][2];
    return 0;
}