const n = 4; type mx = array[1 .. n, 1 .. n] of integer; procedure sub_E(var res: mx); var i, j: integer; begin for i := 1 to n do for j := 1 to n do if i = j then dec(res[i, j]) end; procedure swap_rows(var res: mx; first, second: integer); var i, X: integer; begin for i := 1 to n do begin X := res[i, first]; res[i, first] := res[i, second]; res[i, second] := X end; end; procedure make_diag(var res: mx; a: mx); var i, j, s: integer; begin for i := 1 to n do for j := 1 to n do res[i, j] := 0; for i := 1 to n do begin s := 0; for j := 1 to n do s := s + a[j, i]; res[i, i] := s; end; end; procedure enter(var res: mx); var i, j: integer; begin for i := 1 to n do begin writeln('row #', i); for j := 1 to n do begin write('a[', i:2, j:2, '] = '); readln(res[i, j]); end; end; end; procedure print(res: mx); var i, j: integer; begin writeln; for i := 1 to n do begin for j := 1 to n do write(res[i, j]:5); writeln; end; end; function has_dup(a: mx): boolean; var i, j: integer; begin has_dup := false; for i := 1 to n - 1 do for j := i + 1 to n do if a[i, i] = a[j, j] then has_dup := true; end; function spur(a: mx): integer; var i, s: integer; begin s := 0; for i := 1 to n do s := s + a[i, i]; spur := s; end; var a, c: mx; begin enter(a); print(a); swap_rows(a, 1, 3); print(a); make_diag(c, a); print(c); if has_dup(c) then writeln('Sp(C) = ', spur(c)) else begin sub_E(c); print(c); end; end.