(require 'clojure.set)

(defn find-sum [sum lst]
  (->> lst
       ((juxt set (comp set #(map (partial - sum) %))))
       (apply clojure.set/intersection)
       (vec)))

(->> (slurp "./in")
     clojure.string/split-lines
     ((comp set (partial map read-string)))
     ((fn [lst]
       (reduce
         #(let [fnd (find-sum (- 2020 %2) (clojure.set/difference lst #{%2}))]
            (if (empty? fnd) %1 [%2 fnd]))
         []
         lst)))
     flatten
     (apply *)
     (println))