package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
fmt.Fscan(reader, &n)
l := make([]int, n)
r := make([]int, n)
v := make([]int, 0, 2*n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &l[i], &r[i])
v = append(v, l[i], r[i])
}
sort.Ints(v)
m := 0
for i := 0; i < len(v); i++ {
if i == 0 || v[i] != v[i-1] {
v[m] = v[i]
m++
}
}
v = v[:m]
sz := 2 * m
D := make([]int, sz+1)
for i := 0; i < n; i++ {
L := 2 * sort.SearchInts(v, l[i])
R := 2 * sort.SearchInts(v, r[i])
D[L]++
D[R+1]--
}
cnt := make([]int, sz)
curr := 0
for i := 0; i < sz; i++ {
curr += D[i]
cnt[i] = curr
}
ones := make([]int, sz)
for i := 0; i < sz; i++ {
if i%2 == 0 {
if cnt[i] == 1 {
ones[i] = 1
}
} else {
j := i / 2
if j+1 < m && v[j+1]-v[j] > 1 {
if cnt[i] == 1 {
ones[i] = 1
}
}
}
}
P := make([]int, sz+1)
for i := 0; i < sz; i++ {
P[i+1] = P[i] + ones[i]
}
for i := 0; i < n; i++ {
L := 2 * sort.SearchInts(v, l[i])
R := 2 * sort.SearchInts(v, r[i])
if P[R+1]-P[L] == 0 {
fmt.Println(i + 1)
return
}
}
fmt.Println("-1")
}