How to print a pyramid matrix like that:

**n = 2**

[1, 1, 1]

[1, 2, 1]

[1, 1, 1]

**n = 3**

[1, 1, 1, 1]

[1, 2, 2, 1]

[1, 2, 2, 1]

[1, 1, 1, 1]

**n = 4**

[1, 1, 1, 1, 1]

[1, 2, 2, 2, 1]

[1, 1, 3, 2, 1]

[1, 2, 2, 2, 1]

[1, 1, 1, 1, 1]

def func(N):
N += 1
matrix = [[1 for _ in range(N)] for _ in range(N)]
cnt = 0
while cnt < N:
# UP
for i in range(cnt, N - cnt - 1):
matrix[cnt][i] = cnt + 1
# RIGHT
for i in range(cnt, N - cnt - 1):
matrix[i][N - cnt - 1] = cnt + 1
# DOWN
for i in range(N - cnt - 1, cnt, -1):
matrix[N - cnt - 1][i] = cnt + 1
# LEFT
for i in range(N - cnt, cnt, -1):
matrix[N - cnt - 1][cnt] = cnt + 1
cnt += 1
return matrix
if __name__ == "__main__":
matrix = func(N=4)
for line in matrix:
print(line)