#include<iostream>
#include<string>
#include<map>
#include<stdlib.h>
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;

char in[100], out[100];
int A[110][110], B[110][110], C[110][110], n;
int f(int x, int y){
	if(x==n and y==n) return A[x][y];
	if(x>n or y > n) return -20000000;
	if(C[x][y]==1) return B[x][y];
	C[x][y] = 1;
	return B[x][y] = max(f(x+1,y),f(x,y+1))+A[x][y];
}
int main(){
    int i, j, a,mm;
	for(int I = 1; I<=20; I++){
		sprintf(in,".%d.in",I);
        freopen(in,"w",stdout);
        memset(B,0,sizeof(B));
        memset(C,0,sizeof(C));
        n = I * 5;
        printf("%d\n",n);
        for(i=1;i<=n;i++){
        	for(j=1;j<=n;j++){
        		A[i][j]= rand()%101;
        		printf("%d", A[i][j]);
        		if(j==n) printf("\n");
        		else printf(" ");
			}			
		}
		sprintf(in,".%d.out",I);
        freopen(in,"w",stdout);
    	printf("%d",f(1,1));
	}
}

