    (require (quote [clojure.set           :as s]))
    (require (quote [clojure.core.reducers :as r]))
    (require (quote [clojure.contrib.math  :as m]))
    (def n [0, 3, 5, 6])
    (def a (concat n (map #(- 15 %) (reverse n))))
    (def b (s/difference (set (range 16)) (set a)))
    (defn | [x] (conj [] (apply str (interpose ", " x))))
    (println (| a) (| b))
    (doseq [p (range 0 4)]
      (def ai (r/fold + (map #(m/expt % p) a)))
      (def bi (r/fold + (map #(m/expt % p) b)))
      (printf "%5d%5d\n" ai, bi))
