环形矩阵输入输出问题

输入一个矩阵的层数,生成如下矩阵并进行输出。例如:输入3,则输出

3 3 3 3 3

3 2 2 2 3

3 2 1 2 3

3 2 2 2 3

3 3 3 3 3
我做的代码输出是反着的
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
请不要用scanf或printf,毕竟我也看不懂

#include <iostream>
using namespace std;//回形矩阵
int main()
{      //用的办法不巧妙,遇到的bug头铁式修补,不过效果是正确的
    int n,cnt=1;
    cin>>n;
    int list[200][200]={};//1<=n<=100,最大行列数为199
    for(int m=n;m>=1;m--)
    {
        for(int i=m+n-1;i>=cnt;i--)
        {
            for(int j=m+n-1;j>=cnt;j--)
            {
                list[i][j]=m;
            }
        }
        cnt++;
    }
    list[n][n]=1;
    for(int i=1;i<=2*n-1;i++)
    {
        for(int j=1;j<=2*n-1;j++)
        {
            cout<<list[i][j]<<" ";
        }
        cout<<endl;
    }
    
    
    return 0;
}

那你能看懂哪些能罗列一下么

你是上编程课的同学吗