(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 CD) (if (null? CD) 0 (let ((C (car (car CD))) (D (cdr (car CD)))) (remainder (+ (* D (quotient (+ C 1) 2)) (solve (cdr CD))) 1000000007)))) (display (solve (let ((N (read))) (map (lambda (x) (cons (read) (read))) (iota N))))) (newline)