PROGRAM main FUNCTION foo(x, y : INTEGER): INTEGER; VAR i, j, k : INTEGER; arr : ARRAY[1..32768] of INTEGER; ENDVAR BEGIN k := 1; j := 0; FOR i := 1 TO 32768 DO arr[i] := 0; WHILE k <> y - 1 DO BEGIN k := (k * x) mod y; j := j + 1; arr[k] := j; END FOR i := 1 TO y DO BEGIN IF arr[i] > 0 THEN BEGIN WRITE(arr[i]); WRITESP(); END ENDIF; END foo := j; END BEGIN VAR %% can be empty or completely missing ENDVAR BEGIN VAR w, x, z: INTEGER; ENDVAR x := foo(7, 97); WRITE(x); WRITESP(); z := foo(13, 1023); WRITE(z); WRITELN(); END END