code 36404;
procedure VECPERM(PERM,LOW,UPP,VECTOR);value LOW,UPP;
integer LOW,UPP;integer array PERM;real array VECTOR;
begin integer T,J,K;real A;boolean array TODO[LOW:UPP];
    for T:=LOW step 1 until UPP do TODO[T]:=true;
    for T:=LOW step 1 until UPP do 
    begin if TODO[T] then 
        begin K:=T;A:=VECTOR[K];
            for J:=PERM[K] while J^=T do 
            begin VECTOR[K]:=VECTOR[J];TODO[K]:=false;K:=J
            end;VECTOR[K]:=A;TODO[K]:=false 
        end CYCLE;
    end FOR T;
end VECPERM;

        eop