(define (hcn n)
(let ((divs (make-vector (+ n 1) 0)))
(do ((i 1 (+ i 1))) ((<= n i))
(do ((j i (+ j i))) ((<= n j))
(vector-set! divs j (+ 1 (vector-ref divs j)))))
(let loop ((i 1) (record 0) (hcns (list)))
(if (<= n i) (reverse hcns)
(if (< record (vector-ref divs i))
(loop (+ i 1) (vector-ref divs i) (cons i hcns))
(loop (+ i 1) record hcns))))))
(display (hcn 10000)) (newline)
KGRlZmluZSAoaGNuIG4pCiAgKGxldCAoKGRpdnMgKG1ha2UtdmVjdG9yICgrIG4gMSkgMCkpKQogICAgKGRvICgoaSAxICgrIGkgMSkpKSAoKDw9IG4gaSkpCiAgICAgIChkbyAoKGogaSAoKyBqIGkpKSkgKCg8PSBuIGopKQogICAgICAgICh2ZWN0b3Itc2V0ISBkaXZzIGogKCsgMSAodmVjdG9yLXJlZiBkaXZzIGopKSkpKQogICAgKGxldCBsb29wICgoaSAxKSAocmVjb3JkIDApIChoY25zIChsaXN0KSkpCiAgICAgIChpZiAoPD0gbiBpKSAocmV2ZXJzZSBoY25zKQogICAgICAgIChpZiAoPCByZWNvcmQgKHZlY3Rvci1yZWYgZGl2cyBpKSkKICAgICAgICAgICAgKGxvb3AgKCsgaSAxKSAodmVjdG9yLXJlZiBkaXZzIGkpIChjb25zIGkgaGNucykpCiAgICAgICAgICAgIChsb29wICgrIGkgMSkgcmVjb3JkIGhjbnMpKSkpKSkKCihkaXNwbGF5IChoY24gMTAwMDApKSAobmV3bGluZSk=