#include <bits/stdc++.h>
const int inf = 2e9 + 14;
using namespace std;
struct pt {
  int x1;
  int y1;
  int x2;
  int y2;
};
const pt nul = {inf, inf, inf, inf};
inline pt un(pt s, pt f) {
  if (max(s.x1, f.x1) == inf) return nul;
  pt ans;
  if (s.x1 > f.x1) swap(s, f);
  if (f.x1 > s.x2) return nul;
  ans.x1 = f.x1;
  ans.x2 = min(f.x2, s.x2);
  if (s.y1 > f.y1) swap(s, f);
  if (f.y1 > s.y2) return nul;
  ans.y1 = f.y1;
  ans.y2 = min(f.y2, s.y2);
  return ans;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  vector<pt> v(n);
  vector<pt> pref(n), suf(n);
  for (auto &X : v) cin >> X.x1 >> X.y1 >> X.x2 >> X.y2;
  pref[0] = v[0];
  suf[n - 1] = v.back();
  for (int i = 1; i < n; i++) pref[i] = un(pref[i - 1], v[i]);
  for (int i = n - 2; i >= 0; i--) suf[i] = un(suf[i + 1], v[i]);
  for (int i = 0; i < n; i++) {
    if (i == 0) {
      if (suf[i + 1].x1 != inf) {
        cout << suf[i + 1].x1 << " " << suf[i + 1].y1 << "\n";
        return 0;
      }
    }
    if (i == n - 1) {
      if (pref[i - 1].x1 != inf) {
        cout << pref[i - 1].x1 << " " << pref[i - 1].y1 << "\n";
        return 0;
      }
    }
    auto x = un(pref[i - 1], suf[i + 1]);
    if (x.x1 != inf) {
      cout << x.x1 << " " << x.y1 << "\n";
      return 0;
    }
  }
}
