(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 (solve a) (let loop((b (sort a <)) (prev -1001001001) (res 1001001001)) (if (null? b) (if (= res 1001001001) 0 res) (let ((curr (car b))) (if (= curr prev) (loop (cdr b) curr res) (loop (cdr b) curr (min res (- curr prev)))))))) (display (solve (let ((N (read))) (map (lambda (x) (read)) (iota N))))) (newline)