#### Square matrices

Let the matrix

`A`

contain

`N`

rows and the same number of columns. Such matrices are called

**square**.

Square matrices have main and secondary diagonals.

**Main diagonal** - the diagonal that goes from the top left corner to the bottom right corner.

**Side diagonal**- goes from upper right corner to lower left corner.

Then, to iterate over all elements on the main diagonal, one loop is enough:

pseudocode:
for i from 0 to N-1
working with A[i][i]

The same loop can iterate over the elements of the secondary diagonal.

For elements on the side diagonal, the sum of the row and column indices is constant and equals `N-1`

.

pseudocode:
for i from 0 to N-1
working with A[i][N-1-i]

To process all elements located on the main diagonal and below it, you need a nested loop:

- line number changes from

`0`

to

`N-1`

;

- column number from

`0`

to

`i`

.

pseudocode:
for i from 0 to N-1
for j from 0 to i
working with A[i][j]