#include <bits/stdc++.h>
using namespace std;
int main() {
  multiset<int> inix, iniy, finx, finy;
  int n;
  cin >> n;
  int a, b, c, d;
  vector<pair<pair<int, int>, pair<int, int> > > v(n);
  for (int i = 0; i < n; i++) {
    cin >> a >> b >> c >> d;
    inix.insert(-a);
    finx.insert(c);
    iniy.insert(-b);
    finy.insert(d);
    v[i] = make_pair(make_pair(a, b), make_pair(c, d));
  }
  for (int i = 0; i < n; i++) {
    inix.erase(inix.equal_range(-v[i].first.first).first);
    iniy.erase(iniy.equal_range(-v[i].first.second).first);
    finx.erase(finx.equal_range(v[i].second.first).first);
    finy.erase(finy.equal_range(v[i].second.second).first);
    int maxiInicioX = (*inix.begin());
    int miniFinX = (*finx.begin());
    int maxiInicioY = (*iniy.begin());
    int miniFinY = (*finy.begin());
    if (miniFinX >= -maxiInicioX && miniFinY >= -maxiInicioY) {
      cout << -maxiInicioX << " " << -maxiInicioY << '\n';
      return 0;
    }
    inix.insert(-v[i].first.first);
    finx.insert(v[i].second.first);
    iniy.insert(-v[i].first.second);
    finy.insert(v[i].second.second);
  }
  return 0;
}
