PROGRAM SORTTEST(INPUT,OUTPUT); CONST N=16; VAR A:ARRAY[-15..N]OF INTEGER; PROCEDURE GEN; VAR I:INTEGER; D:TEXT; BEGIN OPEN(D,8,3,"D,S,R"); FOR I:=1 TO N DO READ(D,A[I]); CLOSE(D) END; PROCEDURE OUT; VAR I:INTEGER; P:TEXT; BEGIN OPEN(P,4,0,""); FOR I:=1 TO N DO WRITE(P,A[I]:3); WRITELN(P); CLOSE(P) END; PROCEDURE SHELL; CONST T=4; VAR I,J,K,S,X:INTEGER; M:1..T; H:ARRAY[1..T]OF INTEGER; BEGIN H[1]:=15;H[2]:=7;H[3]:=3;H[4]:=1; FOR M:= 1 TO T DO BEGIN K:=H[M];S:=-K; FOR I:=K+1 TO N DO BEGIN X:=A[I];J:=I-K; IF S=0 THEN S:=-K;S:=S+1;A[S]:=X; WHILE X