(let* ((n (string->number (read-line))) (arr (map string->number (string-split (read-line) #\space)))) (define vec (make-vector (* 100 n) #f)) (define total (fold + 0 arr)) (vector-set! vec 0 #t) (let loop ((weights arr)) (cond ((null? weights) (if (or (= (mod total 2) 1) (eqv? (vector-ref vec (div total 2)) #f)) (print "impossible") (print "possible"))) (else (for-each (lambda (j) (let1 pred (- j (car weights)) (if (and (>= pred 0) (vector-ref vec pred)) (vector-set! vec j #t)))) (iota (* 100 n))) (loop (cdr weights))))))