#!/usr/bin/perl

IN:
print "\nNúmero de personas por grupo jerárquico: ";
$n = <STDIN>;
chomp $n;
if ($n ne $n+0) { print "Not a number"; goto IN; }

IN2:
print "\nNúmero total de personas: ";
$m = <STDIN>;
chomp $m;
if ($m ne $m+0) { print "Not a number"; goto IN2; }
if ($m <= $n) { die "Solución trivial"; }

$a[1][1]=1;
$a[1][0]=1;
$i++;
$nivel=1;
$maxgrupo=1;
while (1){
    $nivel++;
    $sum=0;
    for $j (1..$maxgrupo){
	$sum += $a[$nivel-1][$j];
    }
    $a[$nivel][0]=$sum*$n;
    for $j (1..$sum*$n){
	if ($j>$maxgrupo) { $maxgrupo=$j; }
	$a[$nivel][$j]=1;
	$i++;
	if ($i>=$m){
	    $a[$nivel][0]=$j;
	    &output();
	    exit;
	}
    }
}

sub output {
    print "\n";
    for $i (1.. $nivel){
	print "$a[$i][0]: ";    
	for $j (1.. $maxgrupo) {
	    if (defined $a[$i][$j]) { print "$a[$i][$j] "; }
	}
	print "\n";
    }
}

__END__

