s 0 = ' ' s 1 = '+' s 2 = '-' q w x y z | w < 1 = 0 | x < 1 = 0 | y < 1 = 0 | z < 1 = 0 | w < x = 0 | w < y = 0 | w < z = 0 | 1== w = 1 | 1 < w = ( q (w-1) (x-1) y z + q (w-1) x (y-1) z + q (w-1) x y (z-1) ) `mod` 3 t = mapM_ putStrLn [ [ s $ q w x y z | z<-[1..24], x<-[1..24] ] | w<-[1..48], y<-[1..24] ]