    (cond
      (and (not (sequential? l)) (not (sequential? r))) (= l r)
      (and (sequential? l) (sequential? r)) (and (= (first l) (first r))
-                                  (f (second l) (last r))
-                                  (f (last l) (second r)))
+                                            (f (second l) (last r))
+                                            (f (last l) (second r)))
      :else false)))
 ;; wow solution
 ;;#(let [t (fn t [[v l r]] [v (if r (t r)) (if l (t l))])

                           9 [i x]}]
                 (apply str (d->r d))))
        digits (fn [n] (map #(- (int %) (int \0)) (str n)))]
    (->> (map a->r (reverse (digits a)) (partition-all 3 2 r ))
         (reverse)
         (apply str))))
;; wow solution

    (if (= (update sets) sets)
      sets
      (min-set (update sets)))))
