sort cols before playing with them
(defn smallest-common [& cols] (let [sorted (sort-by first cols)] (if (apply = (map first sorted)) (ffirst sorted) (apply smallest-common (cons (rest (first sorted)) (rest sorted))))))