import List

main = putStr $ unlines $ map (unlines . map (bou!!))
  $ partitions 50 where
  bou = iterate ("[]"++) ""

partitions n = [1..n] >>= partitions' n  where
  partitions' n m = map (map sum.transpose.(:[ones]))
    $ f (n-m) m (n-m)  where ones = replicate m 1
  f _ 0 _ = [[]]
  f n m p = [x:xs| let p' = min n p, x <- [p',p'-1..(n+m-1)`div`m], xs <- f (n-x) (m-1) x]
