#!r6rs (import (rnrs)) (let loop ((total (read))) (if (zero? total) (exit) (let* ((width (read)) (height (read)) (coords-x (make-vector total)) (coords-y (make-vector total))) (do ((k 0 (+ k 1))) ((= k total)) (vector-set! coords-x k (- (read) 1)) (vector-set! coords-y k (- (read) 1))) ; 0-based (let* ((w (read)) (h (read))) (let ((ht (make-eqv-hashtable total))) (do ((k 0 (+ k 1))) ((= k total)) (let* ((i (vector-ref coords-x k)) (j (vector-ref coords-y k))) (let ((y0 (min (+ j h) height))) (do ((y j (+ y 1))) ((= y y0)) (let ((x0 (min (+ i w) width))) (do ((x i (+ x 1))) ((= x x0)) (let* ((n (+ (* y width) x)) (u (hashtable-ref ht n 0))) (hashtable-set! ht n (+ u 1))))))))) (let-values (((_ v) (hashtable-entries ht))) (display (apply max (vector->list v))) (newline)))) (loop (read)))))