#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9 + 7;
vector<vector<int> > g;
vector<int> used, mt, m, pr;
int t;
bool KUN(int v) {
  if (used[v] == t) return 0;
  used[v] = t;
  for (int u : g[v])
    if (mt[u] == -1) {
      mt[u] = v;
      pr[v] = u;
      return 1;
    }
  for (int u : g[v])
    if (KUN(mt[u])) {
      mt[u] = v;
      pr[v] = u;
      return 1;
    }
  return 0;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(0);
  int n;
  cin >> n;
  vector<pair<int, int> > q;
  mt.resize(n, -1);
  for (int i = 0; i < n; ++i) {
    int a, b;
    cin >> a >> b;
    q.push_back(pair<int, int>(b, i));
    q.push_back(pair<int, int>(a, i));
  }
  int x = 0;
  sort(q.begin(), q.end());
  g.resize(1);
  g[0].push_back(q.front().second);
  vector<int> vl;
  vl.push_back(q.front().first);
  for (int i = 1; i < q.size(); ++i) {
    if (q[i].first != q[i - 1].first) {
      x++;
      g.push_back({});
      vl.push_back(q[i].first);
    }
    g[x].push_back(q[i].second);
  }
  t = 1;
  used.resize(g.size(), 0);
  pr.resize(g.size(), -1);
  for (int i = 0; i < g.size(); ++i) {
    if (pr[i] == -1) KUN(i);
    t++;
  }
  int ans = -1;
  for (int i : mt)
    if (i == -1) {
      cout << -1;
      return 0;
    } else
      ans = max(ans, vl[i]);
  cout << ans;
  return 0;
}
