#include <bits/stdc++.h>
inline int read() {
  char c = getchar();
  register int x = 0, r = 1;
  while (c < '0' || c > '9') {
    if (c == '-') r = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') x = (x << 3) + (x << 1) + c - 48, c = getchar();
  return x * r;
}
int n, tot;
void write(int x) {
  if (x > 9) write(x / 10);
  putchar(x % 10 + 48);
}
struct Node {
  int x, y, i, j;
} t[1001 * 1001];
int x[1001], y[1001], a[1001], b[1001];
int tax[1001];
inline int cmp(Node A, Node B) {
  if (A.x == B.x && A.y == B.y) return A.j < B.j;
  if (A.x == B.x) return A.y < B.y;
  return A.x < B.x;
}
inline int check(int l, int r) {
  for (register int i = 1; i <= n; i++) tax[i] = 0;
  int cnt = 0;
  for (register int i = l; i <= r; i++)
    if (!tax[t[i].i]) cnt++, tax[t[i].i] = 1;
  if (cnt == n) return 1;
  return 0;
}
int main() {
  n = read();
  for (register int i = 1; i <= n; i++) x[i] = read(), y[i] = read();
  for (register int i = 1; i <= n; i++) a[i] = read(), b[i] = read();
  for (register int i = 1; i <= n; i++)
    for (register int j = 1; j <= n; j++)
      t[++tot].x = x[i] + a[j], t[tot].y = y[i] + b[j], t[tot].i = i,
      t[tot].j = j;
  std::sort(t + 1, t + tot + 1, cmp);
  int l = 1, r;
  for (register int i = 2; i <= tot; i++) {
    if (t[i].x == t[i - 1].x && t[i].y == t[i - 1].y) continue;
    r = i - 1;
    if (check(l, r)) {
      printf("%d %d\n", t[i - 1].x, t[i - 1].y);
      return 0;
    }
    l = i;
  }
  r = tot;
  if (check(l, r)) printf("%d %d\n", t[tot].x, t[tot].y);
  return 0;
}
