#include <bits/stdc++.h>
using namespace std;
set<long long> s;
pair<long long, long long> a[3000010];
map<long long, long long> hsh;
long long BIT[3000010];
long long which[3000010];
void upd(long long i, long long val) {
  while (i < 3000010) {
    BIT[i] += val;
    i += i & (-i);
  }
}
long long query(long long i) {
  long long sum = 0;
  while (i) {
    sum += BIT[i];
    i -= i & (-i);
  }
  return sum;
}
void upd2(long long i, long long val) {
  while (i < 3000010) {
    which[i] += val;
    i += i & (-i);
  }
}
long long query2(long long i) {
  long long sum = 0;
  while (i) {
    sum += which[i];
    i -= i & (-i);
  }
  return sum;
}
int main() {
  ios_base::sync_with_stdio(0);
  long long i, N;
  cin >> N;
  for (i = 1; i <= N; i++) {
    cin >> a[i].first >> a[i].second;
    a[i].first += 5;
    a[i].second += 5;
    s.insert(a[i].first);
    s.insert(a[i].second);
    s.insert(a[i].first + 1);
    s.insert(a[i].first - 1);
    s.insert(a[i].second + 1);
    s.insert(a[i].second - 1);
  }
  long long K = 1;
  for (__typeof(s.begin()) it = s.begin(); it != s.end(); it++) {
    hsh[*it] = K++;
  }
  for (i = 1; i <= N; i++) {
    upd(hsh[a[i].first], 1);
    upd(hsh[a[i].second] + 1, -1);
    upd2(hsh[a[i].first], i);
    upd2(hsh[a[i].second] + 1, -i);
  }
  set<long long> fans;
  for (i = 1; i <= 3000010 - 1; i++) {
    if (query(i) == 1) {
      fans.insert(query2(i));
    }
  }
  for (i = 1; i <= N; i++) {
    if (!(fans.find(i) != fans.end())) {
      cout << i << endl;
      return 0;
    }
  }
  cout << "-1" << endl;
  return 0;
}
