package main import ( "bufio" "fmt" "io" "os" "strconv" ) func main() { sc := NewScanner(os.Stdin) N := sc.NextInt() zz := -1 for i := 0; i < N; i++ { X := sc.NextInt() Y := sc.NextInt() z := Y - X if z <= 0 { fmt.Println(-1) return } if i == 0 { zz = z continue } if zz != z { fmt.Println(-1) return } } fmt.Println(zz) } type Scanner struct { *bufio.Scanner } func NewScanner(r io.Reader) *Scanner { return &Scanner{ bufio.NewScanner(r), } } func (s *Scanner) Next() string { sc := s.Scanner sc.Split(bufio.ScanWords) return nextToken(sc) } func nextToken(sc *bufio.Scanner) string { sc.Scan() if sc.Err() != nil { panic(sc.Err()) } return sc.Text() // not handle EOF } func (s *Scanner) NextInt() int { i, e := strconv.Atoi(s.Next()) if e != nil { panic(e) } return i }