#include<iostream>#include<cstdio>#include<stdlib.h>#include<algorithm> using namespace std;enum { SIZ = 108,};struct Point{ int x,y;};int num;Point tree[SIZ];struct _cmp_x{ bool operator()(const int&a, const int&b)const{ if(tree[a].x != tree[b].x) return tree[a].x < tree[b].x; return tree[a].y<tree[b].y; }}xc;struct _cmp_y{ bool operator()(const int&a, const int&b)const{ if(tree[a].y != tree[b].y) return tree[a].y<tree[b].y; return tree[a].x < tree[b].x; }}yc;int W,H;int x[SIZ];int y[SIZ];int wid;Point o;void fun(){ int i,j,k; int gw, ow; for(i=0; i<num; i++){ if(i && tree[x[i]].x == tree[x[i-1]].x) continue; for(j=0; j<num; j++){ if(j &&tree[y[j]].y==tree[y[j-1]].y) continue; gw = W - tree[x[i]].x; for(k=j+1; k<num; k++){ if( tree[y[k]].y == tree[y[j]].y ||tree[y[k]].x <= tree[x[i]].x ||tree[y[k]].x > tree[x[i]].x + gw) continue; ow = min(gw, tree[y[k]].y-tree[y[j]].y); gw = min(gw, tree[y[k]].x-tree[x[i]].x); if(ow > wid){ wid = ow; o.x = tree[x[i]].x; o.y = tree[y[j]].y; } } ow = min(gw, H-tree[y[j]].y); if(ow > wid){ wid = ow; o.x = tree[x[i]].x; o.y = tree[y[j]].y; } } } printf("%d %d %dn", o.x, o.y, wid);}int readIn(){ if(scanf("%d%d%d",&num,&W,&H)<0) return 0; for(int i=0; i<num; i++){ scanf("%d%d",&tree[i].x, &tree[i].y); x[i] = y[i] = i; } tree[num].x = 0, tree[num].y = 0; x[num] = y[num] = num; num++; wid = o.x = o.y = 0; sort(x, x+num, xc); sort(y, y+num, yc); return 1;}int main(){ while(readIn()>0){ fun(); } return 0;}