(define (iota n . args) (let ((start (if (pair? args) (car args) 0)) (step (if (and (pair? args) (pair? (cdr args))) (cadr args) 1))) (let loop ((m n) (last (+ start (* step (- n 1)))) (a '())) (if (zero? m) a (loop (- m 1) (- last step) (cons last a)))))) (define (min-element a) (if (null? a) 1001001001 (min (car a) (min-element (cdr a))))) (define (max-element a) (if (null? a) -1001001001 (max (car a) (max-element (cdr a))))) (define (unique? a) (= (min-element a) (max-element a))) (define (solve a) (let ((b (map (lambda (x) (- (cadr x) (car x))) a))) (if (unique? b) (if (positive? (car b)) (car b) -1) -1))) (display (solve (let ((N (read))) (map (lambda (x) (list (read) (read))) (iota N))))) (newline)