code 36403;
procedure ROWPERM(PERM,LOW,UPP,I,MAT);value LOW,UPP,I;
integer LOW,UPP,I;integer array PERM;real array MAT;
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:=MAT[I,K];
            for J:=PERM[K] while J^=T do 
            begin MAT[I,K]:=MAT[I,J];TODO[K]:=false;K:=J
            end;MAT[I,K]:=A;TODO[K]:=false 
        end CYCLE;
    end FOR T;
end ROWPERM;
        eop