sub combinations { #58+58=116 #23456789_123456789_123456789_123456789_123456789_123456789_ my@a;$;=@{$_[0]}**@_;while($a=pop){$==0;for$a((@$a)x($;>>( $b=@$a**@_)||1)){push@{$a[$=++]},$a for+1..$b}}@a[0..$;-1] }