MODULE Combinations; FROM STextIO IMPORT WriteString, WriteLn; FROM SWholeIO IMPORT WriteInt; CONST MMax = 3; NMax = 5; VAR Combination: ARRAY [0 .. MMax] OF CARDINAL; PROCEDURE Generate(M: CARDINAL); VAR N, I: CARDINAL; BEGIN IF (M > MMax) THEN FOR I := 1 TO MMax DO WriteInt(Combination[I], 1); WriteString(' '); END; WriteLn; ELSE FOR N := 1 TO NMax DO IF (M = 1) OR (N > Combination[M - 1]) THEN Combination[M] := N; Generate(M + 1); END END END END Generate; BEGIN Generate(1); END Combinations.