#include <bits/stdc++.h>
using namespace std;

int main(){
  int N;
  cin >> N;
  vector<int> A(N),B(N);
  int ans=1e9;
  for(int i=0;i<N;i++){
    cin >> A.at(i) >> B.at(i);
  }
  for(int i=0;i<N;i++){
    for(int j=0;j<N;j++){
      if(i==j){
        ans=min(ans,A.at(i)+B.at(j));
      }else{
        ans=min(ans,max(A.at(i),B.at(j)));
      }
    }
  }
  cout << ans << endl;
  return 0;
}

#include <bits/stdc++.h>
// #include <atcoder/all>
#define rep(i,n) for(int i = 0; i < (n); ++i)
#define rep1(i,n) for(int i = 1; i <= (n); ++i)
// #define MOD 998'244'353
// #define MOD 1'000'000'007
// #define INF 1'000'000'000'000'000'000
using namespace std;
// using namespace atcoder;
typedef long long ll;

int main(){
    int N;
    cin >> N;

    vector<pair<int, int> > A(N);
    vector<pair<int, int> > B(N);
    // vector<int> A(N);
    // vector<int> B(N);
    rep(i, N){
        cin >> A[i].first >> B[i].first;
        A[i].second = i;
        B[i].second = i;
    }
    // rep(i, N) cin >> A[i] >> B[i];

    sort(A.begin(), A.end());
    sort(B.begin(), B.end());

    int ans;

    if (A[0].second != B[0].second){
        ans = max(A[0].first, B[0].first);
    }else{
        ans = A[0].first + B[0].first;
        ans = min(ans, max(A[1].first, B[0].first));
        ans = min(ans, max(A[0].first, B[1].first));
    }
    cout << ans << endl;

    return 0;
}