(define (read-line n) (if (> n 0) (cons (read) (read-line (1- n))) '())) (let test ((t (read))) (when (> t 0) (display (let* ((n (read)) (w (read-line n)) (l (read-line n)) (i (let range ((k 1) (m n)) (if (> m 0) (cons k (range (1+ k) (1- m))) '())))) (let loop ((last 0) (frogs (map cdr (sort (map list w i l) (lambda (u v) (< (car u) (car v))))))) (if (null? frogs) 0 (let* ((first (car frogs)) (pos (car first)) (len (cadr first)) (hits (if (> pos last) 0 (1+ (quotient (- last pos) len))))) (+ hits (loop (+ pos (* hits len)) (cdr frogs)))))))) (newline) (test (1- t))))