#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <inttypes.h>
uint64_t *x;
uint64_t *y;
uint64_t n;
uint64_t score(uint64_t my_x, uint64_t my_y){
uint64_t maxs = 0;
uint64_t nb = 0;
for (uint64_t i = 0; i < n; i++){
nb = ulabs(x[i] - my_x) + ulabs(y[i] - my_y);
maxs = (nb > maxs) ? nb : maxs;
}
// printf("mins = %ld\n", maxs);
return maxs;
}
int main() {
if (scanf("%ld", &n) == 0)
return EXIT_FAILURE;
x = (uint64_t*) malloc(n * sizeof(uint64_t));
y = (uint64_t*) malloc(n * sizeof(uint64_t));
// main algo
uint64_t minx = UINT64_MAX;
uint64_t miny = UINT64_MAX;
uint64_t maxx = 0;
uint64_t maxy = 0;
for (uint64_t i = 0; i < n; i++){
// printf("minx:%lu miny:%lu maxx:%lu maxy:%lu\n", minx, miny, maxx, maxy);
if (scanf("%lu %lu", x + i, y + i) == 0)
return EXIT_FAILURE;
// printf("x:%ld y:%ld", x[i], y[i]);
minx = (minx < x[i]) ? minx : x[i];
miny = (miny < y[i]) ? miny : y[i];
maxx = (maxx > x[i]) ? maxx : x[i];
maxy = (maxy > y[i]) ? maxy : y[i];
// printf("minx:%lu miny:%lu maxx:%lu maxy:%lu\n", minx, miny, maxx, maxy);
}
uint64_t midx = (minx + maxx) / 2;
uint64_t midy = (miny + maxy) / 2;
// printf("minx:%ld miny:%ld maxx:%ld maxy:%ld\n", minx, miny, maxx, maxy);
// printf("%ld %ld\n", midx, midy);
uint64_t resx = midx;
uint64_t resy = midy;
uint64_t mini = score(midx, midy);
// printf("mins = %ld\n", mini);
if (score(midx + 1, midy) < mini){
mini = score(midx + 1, midy);
// printf("bmins = %ld\n", mini);
resx = midx + 1;
resy = midy;
}
if (score(midx, midy + 1) < mini){
mini = score(midx, midy + 1);
// printf("cmins = %ld\n", mini);
resx = midx;
resy = midy + 1;
}
if (score(midx + 1, midy + 1) < mini){
mini = score(midx + 1, midy + 1);
// printf("dmins = %ld\n", mini);
resx = midx + 1;
resy = midy + 1;
}
printf("%ld %ld\n", resx, resy);
return EXIT_SUCCESS;
}