(define (main args) (let* ([n (read)] [mv (vector-tabulate (+ n 1) identity)]) (let loop ([k 2] [c 3] [i 3]) (cond [(> c n) #t] [(> i n) (loop (+ k 1) (quotient (* (+ k 1) (+ k 2)) 2) (quotient (* (+ k 1) (+ k 2)) 2))] [else (vector-set! mv i (min (vector-ref mv i) (+ 1 (vector-ref mv (- i c))))) (loop k c (+ i 1))])) (print (vector-ref mv n)) ) 0)