Help me in solving TRACE problem

My issue

i am pretty sure i am correct but the it returns wrong answer

My code

#include <stdio.h>

int main(void) {
	int t;
	scanf("%d",&t);
	while(t--){
	   int n;
	   scanf("%d",&n);
	   int a[n][n];
	   for (int i=0;i<n;i++){
	       for (int j=0;j<n;j++){
	       scanf("%d",&a[i][j]);
	       }
	   }
	   
	   int max=0;
	   for (int l=2;l<=n;l++){
	       for (int i=0;i<n-l+1;i++){
	           for (int j=0;j<n-l+1;j++){
	               int s=0;
	               for (int k=0;k<l;k++){
	                   s+=a[i+k][j+k];
	               }
	               if (s>=max){
	                   max=s;
	               }
	               s=0;
	           }
	       }
	   }
	   printf("%d",max);
	}
	return 0;
}


Problem Link: Trace of Matrix Practice Coding Problem - CodeChef

@basalt802
plzz refer my c++ code for better understanding

#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;
	}

}