solution in clojure