#include #include #include #include #include #include #define eps 1e-9 #define nn 1000005 #define INF 0x7FFFFFFF #define pi acos(-1) #define e 2.718281828459045 #define maxn 502 #define mod 5201314 #define LL long long using namespace std; /*-----------------------------never more!---------------------------*/ /* _______________#########_______________________ ______________############_____________________ ______________#############____________________ _____________##__###########___________________ ____________###__######_#####__________________ ____________###_#######___####_________________ ___________###__##########_####________________ __________####__###########_####_______________ ________#####___###########__#####_____________ _______######___###_########___#####___________ _______#####___###___########___######_________ ______######___###__###########___######_______ _____######___####_##############__######______ ____#######__#####################_#######_____ ____#######__##############################____ ___#######__######_#################_#######___ ___#######__######_######_#########___######___ ___#######____##__######___######_____######___ ___#######________######____#####_____#####____ ____######________#####_____#####_____####_____ _____#####________####______#####_____###______ ______#####______;###________###______#________ ________##_______####________####______________ 葱官赐福 百无禁忌 */ int dp[2][maxn][maxn]; char ma[maxn][maxn]; void add(int &x,int y) { x+=y; if(x>=mod) x-=mod; } int main() { int T; scanf("%d",&T); while(T--) { int ans=0; int n,m; scanf("%d",&n); m=n; int i; for(i=1;i<=n;i++) scanf("%s",ma[i]+1); if(ma[1][1]==ma[n][m]) dp[0][1][n]=1; else dp[0][1][n]=0; int cur=0; for(int dis=1;dis<=(n+m-2)/2;dis++) { cur^=1; for(i=1;i<=n;i++) for(int j=1;j<=n;j++) dp[cur][i][j]=0; for(int x1=1;x1<=n&&x1-1<=dis;x1++) for(int x2=n;x2>=1&&n-x2<=dis;x2--) { int y1=dis-x1+2; int y2=m-(dis-(n-x2)); if(ma[x1][y1]!=ma[x2][y2]) continue; add(dp[cur][x1][x2],dp[1-cur][x1-1][x2]); add(dp[cur][x1][x2],dp[1-cur][x1-1][x2+1]); add(dp[cur][x1][x2],dp[1-cur][x1][x2+1]); add(dp[cur][x1][x2],dp[1-cur][x1][x2]); } } for(i=1;i<=n;i++) add(ans,dp[cur][i][i]); if((n+m)%2) { for(i=1;i