#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e18;
const long long SIZE = 2e5 + 5;
const long long mod = 1e9 + 7;
struct info {
  long long l, r, r1, r2, id;
} tv[SIZE];
bool cmp(info a, info b) {
  if (a.l == b.l) return a.r < b.r;
  return a.l < b.l;
}
int main() {
  long long t = 0, n, x, y, z, i, j, k, g, p, q, ans = 0, sum = 0, c = 0;
  string s, s1, s2;
  scanf("%lld", &n);
  for (i = 1; i <= n; i++) {
    scanf("%lld %lld", &tv[i].l, &tv[i].r);
    tv[i].id = i;
  }
  sort(tv + 1, tv + n + 1, cmp);
  for (i = 1; i <= n; i++) {
    if (i == 1) {
      tv[i].r1 = tv[i].l;
      tv[i].r2 = tv[i].r;
      continue;
    }
    if (tv[i].l > tv[i - 1].r2) {
      tv[i].r1 = tv[i].l;
      tv[i].r2 = tv[i].r;
      continue;
    }
    if (i > 2) {
      if (tv[i].l - tv[i - 2].r2 <= 1 && tv[i - 1].r2 <= tv[i].r) {
        printf("%lld\n", tv[i - 1].id);
        return 0;
      }
    }
    if (tv[i].l >= tv[i - 1].r1 && tv[i].r <= tv[i - 1].r2) {
      printf("%lld\n", tv[i].id);
      return 0;
    }
    if (tv[i].l == tv[i - 1].l && tv[i].r >= tv[i - 1].r) {
      printf("%lld\n", tv[i - 1].id);
      return 0;
    }
    tv[i].r1 = tv[i - 1].r1;
    tv[i].r2 = max(tv[i - 1].r2, tv[i].r);
  }
  printf("-1\n");
  return 0;
}
