; anna's homework

(define (anna xs)
  (let ((ht (make-eq-hashtable)) (n (length xs)))
    (let loop ((xs xs))
      (if (pair? xs)
          (begin (hashtable-update! ht (car xs) add1 0)
                 (loop (cdr xs)))
          (call-with-values
            (lambda () (hashtable-entries ht))
            (lambda (keys vals)
              (let loop ((k 0) (result (list)))
                (if (= k (vector-length keys)) result
                  (if (< (/ n 3) (vector-ref vals k))
                      (loop (+ k 1) (cons (vector-ref keys k) result))
                      (loop (+ k 1) result))))))))))

(display (anna '(1 1 2 2 1 1 1 5 6 7))) (newline)
(display (anna '(1 1 1 1 2 2 2 2 3 4))) (newline)
(display (anna '(1 2 3 4 5))) (newline)