What is exactly wrong with this approach?

My issue

can you tell me what is wrong with this approach. (in place of 27-32 consider commented code)

My code

#include <bits/stdc++.h>

using namespace std;

int main() {
    int t;
    cin >> t;
    while (t--) {
        int n;
        cin >> n;

        int a[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                cin >> a[i][j];
            }
        }

        if (n == 1) cout << a[0][0];

        int maxi = 0;

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                int sum = 0;
                int l=i, m = j;
                 if (i < n - 1 && j < n - 1) {
                     for (int k = 0; k < n; k++) {
                         if (i + k < n && j + k < n) {
                             sum += a[i + k][j + k];
                         } else continue;
                     }
                     maxi = max(maxi, sum);

                 } else continue;
            }
        }
        cout << maxi << endl;
    }
}

Problem Link: Trace of Matrix Practice Coding Problem

@aakarshverma
plzz refer my c++ code

#include <bits/stdc++.h>
using namespace std;

int main() {
	// your code goes here
	int t;
	cin>>t;
	while(t--)
	{
	    int n;
	    cin>>n;
	    int a[n][n];
	    for(int i=0;i<n;i++)
	    {
	        for(int j=0;j<n;j++)
	        {
	            cin>>a[i][j];
	        }
	    }
	    int ans=0;
	    for(int i=n-1;i>=0;i--)
	    {
	        int sm=0;
	        for(int j=0,k=i;j<n&&k<n;j++,k++)
	        {
	            sm+=a[k][j];
	        }
	        ans=max(ans,sm);
	    }
	    for(int i=0;i<n;i++)
	    {
	        int sm=0;
	        for(int j=0,k=i;j<n&&k<n;j++,k++)
	        {
	            sm+=a[j][k];
	        }
	        ans=max(ans,sm);
	    }
	    cout<<ans<<endl;
	}

}