```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var n int
fmt.Fscan(in, &n)
l := make([]int, n)
r := make([]int, n)
minL := int(1e9) + 1
maxR := 0
for i := 0; i < n; i++ {
fmt.Fscan(in, &l[i], &r[i])
if l[i] < minL {
minL = l[i]
}
if r[i] > maxR {
maxR = r[i]
}
}
ans := -1
for i := 0; i < n; i++ {
if l[i] == minL && r[i] == maxR {
ans = i + 1
break
}
}
fmt.Fprintln(out, ans)
}
```