#include <bits/stdc++.h>
using namespace std;
struct {
  long long u, d, l, r;
} pre[200005], suf[200005], cont[200005];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n;
  while (cin >> n) {
    for (int i = 1; i < n + 1; i++) {
      cin >> cont[i].l >> cont[i].d >> cont[i].r >> cont[i].u;
    }
    pre[0].u = 1e18;
    pre[0].d = -1e18;
    pre[0].l = -1e18;
    pre[0].r = 1e18;
    suf[n + 1].u = 1e18;
    suf[n + 1].d = -1e18;
    suf[n + 1].l = -1e18;
    suf[n + 1].r = 1e18;
    for (int i = 1; i <= n; i++) {
      pre[i].u = min(pre[i - 1].u, cont[i].u);
      pre[i].d = max(pre[i - 1].d, cont[i].d);
      pre[i].l = max(pre[i - 1].l, cont[i].l);
      pre[i].r = min(pre[i - 1].r, cont[i].r);
    }
    for (int i = n; i >= 1; i--) {
      suf[i].u = min(suf[i + 1].u, cont[i].u);
      suf[i].d = max(suf[i + 1].d, cont[i].d);
      suf[i].l = max(suf[i + 1].l, cont[i].l);
      suf[i].r = min(suf[i + 1].r, cont[i].r);
    }
    for (int i = 1; i <= n; i++) {
      long long left = max(pre[i - 1].l, suf[i + 1].l);
      long long right = min(pre[i - 1].r, suf[i + 1].r);
      long long down = max(pre[i - 1].d, suf[i + 1].d);
      long long up = min(pre[i - 1].u, suf[i + 1].u);
      if (left <= right && down <= up) {
        cout << left << ' ' << down << '\n';
        break;
      }
    }
  }
}
