1, 2, 3, 4 = 22, 5, 6 = 2⋅3, 8 = 23, 9 = 32, 10 = 2⋅5,...
merge (x:xs) (y:ys) = case compare x y of ... hamming m = xs where mul f = map (*f) xs xs = 1 : foldr1 merge (map mul m)