#!/usr/bin/ruby
func combine(n, set) {
set.len || return [];
n == 1 && return set.map{[_]};
var (head, result);
head = set.shift;
result = __FUNC__(n-1, [set...]);
result.each { |subarray|
subarray.unshift(head);
};
result + __FUNC__(n, set);
}
combine(3, @(0..4)).each {|row|
say row.join(' ');
}