(|n, m|{ c: callee; m--; return fiber{ if(m < 1) yield [n]; else (n + 1).times{|x| c(x, m){ yield [n - x] ~ it; } } } })(5, 3).join("\n").p;