3問目

--2006年本選3問目より
module Main (main) where

import System
import Data.List (intersperse)

main = do
    (inputFile:_) <- getArgs
    contents <- readFile inputFile
    let n = read contents
      in writeFile "output.txt" $ dump $ sheeds n

sheeds :: Int -> [[Int]]
sheeds n = nub $ map (filter (/= 0)) $ map (reverse . sort) $ filter ((==) n . sum) $ sequence $ replicate n [0..n]

dump :: [[Int]] -> String
dump xss = concat $ intersperse "\n" $ map dump' xss
    where
        dump' = concat . intersperse " " . map show