← Home
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")
}