code 34174;
    comment MCA 2406;
    procedure BAKLBR(N, N1, N2, D, INT, VEC); value N, N1, N2;
    integer N, N1, N2; array D, VEC; integer array INT;
    begin integer I, J, K, P, Q; real DI;

        P:= 1; Q:= N;
        for I:= 1 step 1 until N do 
        begin DI:= D[I]; if DI ^= 1 then 
            for J:= N1 step 1 until N2 do VEC[I,J]:=
            VEC[I,J] * DI; K:= INT[I];
            if K > 0 then P:= P + 1 else 
            if K < 0 then Q:= Q - 1
        end;
        for I:= P - 1 + N - Q step -1 until 1 do 
        begin K:= INT[I]; if K > 0 then 
            begin P:= P - 1; if K ^= P then 
                ICHROW(N1, N2, K, P, VEC)
            end else 
            begin Q:= Q + 1; if -K ^= Q then 
                ICHROW(N1, N2, -K, Q, VEC)
            end 
        end 
    end BAKLBR;
        eop