semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	int n,i,j,k,len,sum;	//len : the length of matrix
	int m[100][100];
	void cutr0(int m[100][100],int len);
	void cutc0(int m[100][100],int len);
	void del(int m[100][100],int n);//delete row[1] and column[1];return n-1;
	cin >> n;
	for (k=1;k<=n;k++)
	{
		sum=0;
		len=n;
		for (i=0;i<n;i++)
			for (j=0;j<n;j++)
				cin >> m[i][j];


		while (len>1)
		{
			cutr0(m,len);
			cutc0(m,len);
			sum +=m[1][1];
			del(m,len);
			len--;
		}
		cout << sum << endl;
	}

	return 0;
}


void cutr0(int m[100][100],int len)
{
	int min[100];		//min[i] stores the min value of row[i]
	int i,j;

	for (i=0;i<len;i++)
	{
		min[i]=m[i][0];
		for (j=1;j<len;j++)
			if (min[i]>m[i][j])	
				min[i]=m[i][j];
	}

	for (i=0;i<len;i++)
		for (j=0;j<len;j++)
			m[i][j] -= min[i];
}

void cutc0(int m[100][100],int len)
{
	int min[100];		//min[i] stores the min value of column[i]
	int i,j;

	for (i=0;i<len;i++)
	{
		min[i]=m[0][i];
		for (j=1;j<len;j++)
			if (min[i]>m[j][i])	
				min[i]=m[j][i];
	}

	for (i=0;i<len;i++)
		for (j=0;j<len;j++)
			m[i][j] -= min[j];
}

void del(int m[100][100],int len)
{
	int i,j;
	for (i=2;i<len;i++)		//deal with row[0] and column[0]
	{
		m[0][i-1]=m[0][i];
		m[i-1][0]=m[i][0];
	}
	for (i=2;i<len;i++)
		for (j=2;j<len;j++)
			m[i-1][j-1]=m[i][j];
}
int min2;
  int min1;
void diguihang(int i,int n,int a[300][300])//to work out the min of every line
{   if(i==-1)return;
	min1=a[i][0];//min1 = INT_MAX;
	for(int j=0;j<n;j++)
	{
		if(a[i][j]<min1)min1=a[i][j];
	}

		for(int v=0;v<n;v++)
		{
			a[i][v]=a[i][v]-min1;

		}
		diguihang(i-1,n,a);//a???????

}

void diguilie(int i,int n,int a[300][300])//the same as above to work out the min of
{
	if(i==-1)return;
	min2=a[0][i];//min2 = INT_MAX;
	for(int j=0;j<n;j++)
	{

		if(a[j][i]<min2)min2=a[j][i];
	}

		for(int v=0;v<n;v++)
		{
			a[v][i]=a[v][i]-min2;

		}
		diguilie(i-1,n,a);
	}

int change(int n,int sum,int a[300][300])//to shorten
{
	if (n==1)return sum;

		diguihang(n-1,n,a);
		diguilie(n-1,n,a);
		sum=sum+a[1][1];
	for(int j=1;j<n-1;j++)
	for(int i=0;i<n;i++)
	{
		a[j][i]=a[j+1][i];
	}
	for(int j=1;j<n-1;j++)
		for(int i=0;i<n-1;i++)
		{
			a[i][j]=a[i][j+1];
		}

      return  change(n-1,sum,a);
}
int main()
{
	int N;
	int a[300][300];
	cin>>N;
	for(int i=1;i<=N;i++){
		for(int j=0;j<N;j++)
			for(int y=0;y<N;y++)
			{
				cin>>a[j][y];
			}
		cout<<change(N,0,a)<<endl;
	}
	return 0;
}
/*
 * ?????????.cpp
 *
 *  Created on: 2011-12-31
 *      Author: ???
 */

int main() {
	int n,i,j,a[10000],*p,k=0;
        p=a;
	cin>>n;
	while(k<n){
		int total=0,m=n;
		k++;
		for(i=0;i<n;i++)
			for(j=0;j<n;j++){
				cin>>*(p+i*n+j);
			}
		while(m>1){
			int min=100000;
			for(i=0;i<m;i++){
				for(j=0;j<m;j++){
					if(*(p+i*m+j)<min)min=*(p+i*m+j);
				}
				for(j=0;j<m;j++)*(p+i*m+j)-=min;
				min=10000;
			}
			min=10000;
			for(j=0;j<m;j++){
				for(i=0;i<m;i++){
					if(*(p+i*m+j)<min)min=*(p+i*m+j);
				}
				for(i=0;i<m;i++)*(p+i*m+j)-=min;
				min=10000;
			}
			total+=*(p+m+1);
			for(j=2;j<m;j++)*(p+j-1)=*(p+j);
			for(i=2;i<m;i++){
				*(p+(i-1)*(m-1))=*(p+i*m);
				for(j=2;j<m;j++)
					*(p+(i-1)*(m-1)+j-1)=*(p+i*m+j);
			}
			m--;
		}
		cout<<total<<endl;
	}
	return 0;
}
int main()
{
	int n,i,j,k,num,ans,a[100][100];
    cin >>n;
	for (k=0;k<n;k++) //??n???
	{
		for (i=0;i<n;i++)
		{
			for (j=0;j<n;j++)
				cin >>a[i][j];
		}         //??????
		ans=0;
		for (num=0;num<n-1;num++) //?n-1??????
		{
			int min1,min2;
			for (i=0;i<n-num;i++)
			{
				min1=a[i][0];
				for (j=0;j<n-num;j++)
				{
					if (min1>a[i][j])
						min1=a[i][j];  //???????
				}
				for (j=0;j<n-num;j++)
				{
					a[i][j]-=min1;
				}
			}     //???
			for (j=0;j<n-num;j++)
			{
				min2=a[0][j];
				for (i=0;i<n-num;i++)
				{
					if (min2>a[i][j])
						min2=a[i][j];
				}
				for (i=0;i<n-num;i++)
				{
					a[i][j]-=min2;
				}
			}     //???
			ans+=a[1][1];  //??a[1][1]??
			for (i=1;i<n-num-1;i++)
			{
				for (j=0;j<n-num;j++)
					a[i][j]=a[i+1][j];
			}     //?????3?????
			for (j=1;j<n-num-1;j++)
			{
				for (i=0;i<n-num-1;i++)
					a[i][j]=a[i][j+1];
			}     //?????3?????
		}
        cout <<ans<<endl;
	}
	return 0;
}
int a[100][100],sum;
void f(int m)
{
	int i,j,min;
	if(m>1)
	{
		for(i=0;i<m;i++)
		{
			min=a[i][0];
			for(j=0;j<m;j++)
				if(a[i][j]<min)
					min=a[i][j];
			if(min!=0)
				for(j=0;j<m;j++)
					a[i][j]=a[i][j]-min;
		}
		for(j=0;j<m;j++)
		{
			min=a[0][j];
			for(i=0;i<m;i++)
				if(a[i][j]<min)
					min=a[i][j];
			if(min!=0)
				for(i=0;i<m;i++)
					a[i][j]=a[i][j]-min;
		}
		sum=sum+a[1][1];
		for(j=2;j<m;j++)
			a[0][j-1]=a[0][j];
		for(i=2;i<m;i++)
			a[i-1][0]=a[i][0];
		for(i=2;i<m;i++)
			for(j=2;j<m;j++)
				a[i-1][j-1]=a[i][j];
		f(m-1);
	}
}

int main()
{
	int n,i,j,k;
	cin>>n;
	for(k=1;k<=n;k++)
	{
		sum=0;
		for(i=0;i<n;i++)
			for(j=0;j<n;j++)
				cin>>a[i][j];
		f(n);
		cout<<sum<<endl;
	}
	return 0;
}
/*
 *???pro.cpp
 *????????????
 *??: 2012-11-27
 *?????1200012825
 */

int a[100][100];
int sum=0;
int n;
void rows(int num);
void columns(int num);
void deletes(int num);
int main(void)
{

	cin>>n;
	for(int q=1;q<=n;q++){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				cin>>a[i][j];//??
			}
		}
		for(int i=1;i<=n-1;i++){//??n-1???
			rows(i);
			columns(i);
			sum=sum+a[2][2];
			deletes(i);
		}
		cout<<sum<<endl;//??
		sum=0;
	}
	return 0;
}
void rows(int num)//???????
{
	int min1[100];
	for(int i=1;i<=n+1-num;i++){
		min1[i]=a[i][1];
	}
	for(int i=1;i<=n+1-num;i++){
		for(int j=1;j<=n+1-num;j++){
			if(min1[i]>a[i][j]){
				min1[i]=a[i][j];//????
			}
		}
		for(int j=1;j<=n+1-num;j++){
			a[i][j]=a[i][j]-min1[i];//?????
		}
	}
}
void columns(int num)//???????
{
	int min2[100];
	for(int j=1;j<=n+1-num;j++){
		min2[j]=a[1][j];
	}
	for(int j=1;j<=n+1-num;j++){
		for(int i=1;i<=n+1-num;i++){
			if(min2[j]>a[i][j]){
				min2[j]=a[i][j];
			}
		}
		for(int i=1;i<=n+1-num;i++){
			a[i][j]=a[i][j]-min2[j];
		}
	}
}
void deletes(int num){//????????
	for(int i=2;i<n+1-num;i++){
		for(int j=1;j<=n+1-num;j++){
			a[i][j]=a[i+1][j];
		}
	}
	for(int j=2;j<n+1-num;j++){
		for(int i=1;i<n+1-num;i++){
			a[i][j]=a[i][j+1];
		}
	}
}
int main()
{
	int n,i,j,k;
	cin>>n;
	int n1=n;
while(n1)
{
	int a[n][n],sum=0;
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			cin>>*(*(a+i)+j);
	for(i=n;i>1;i--)
	{
		for(j=0;j<i;j++)
		{
			int min=*(*(a+j));
			for(k=1;k<i;k++)
				if(*(*(a+j)+k)<min)
					min=*(*(a+j)+k);
			for(k=0;k<i;k++)
				*(*(a+j)+k)=*(*(a+j)+k)-min;
		}
		for(j=0;j<i;j++)
		{
			int min=*(*a+j);
			for(k=1;k<i;k++)
				if(*(*(a+k)+j)<min)
					min=*(*(a+k)+j);
			for(k=0;k<i;k++)
				*(*(a+k)+j)=*(*(a+k)+j)-min;

		}
		sum=sum+*(*(a+1)+1);
		for(j=2;j<i;j++)
			for(k=0;k<i;k++)
				*(*(a+k)+j-1)=*(*(a+k)+j);
		for(j=2;j<i;j++)
			for(k=0;k<i;k++)
				*(*(a+j-1)+k)=*(*(a+j)+k);

	}
	cout<<sum<<endl;
n1--;
}
}
/*
 * matrix_sub.cpp
 *
 *  Created on: 2012-12-28
 *      Author: 12001
 */



int main() {
	int n;
	int matrix[100][100];

	cin >> n;
	for (int i = 0; i < n; i++) {
		int sum = 0;
		for (int j = 0; j < n; j++)
			for (int k = 0; k < n; k++)
				cin >> matrix[j][k];
		for (int m = n; m > 1; m--) {
			// for line
			for (int j = 0; j < m; j++) {
				int min = matrix[j][0];
				for (int k = 1; k < m; k++) {
					if (matrix[j][k] < min)
						min = matrix[j][k];
				}
				for (int k = 0; k < m; k++)
					matrix[j][k] -= min;
			}
			// for column
			for (int j=0; j<m; j++){
				int min = matrix[0][j];
				for (int k = 1; k < m; k++) {
					if (matrix[k][j] < min)
						min = matrix[k][j];
				}
				for (int k=0;k<m;k++)
					matrix[k][j]-=min;
			}

			sum += matrix[1][1];
			for (int i = 1; i < m; i++){
				for (int j = 1; j < m; j++)
					matrix[i][j] = matrix[i + 1][j + 1];
				matrix[0][i]=matrix[0][i+1];
				matrix[i][0]=matrix[i+1][0];
			}
		}
		cout << sum << endl;
	}
	return 0;
}
/**
* ??
* 2010?12?4
* ?????????
*/
int a[100][100];
void guiling(void);  //??????????????0
void xiaojian(int);  //????????????????-1?????????????
int g_n;  //???????
int main ()
{
	cin >> g_n;
	int i, j, k;
	for (i = 1; i <= g_n ;i++)
	{
		for (j = 0; j <= g_n - 1; j++)
		{
			for (k = 0; k <= g_n - 1; k++)
			{
				cin >> a[j][k];
			}
		}  //????
	int cishu = 1;  //??????????????cishu????
	int sum = 0;
	for (;a[g_n - 1][0] >= 0; cishu++) //????????
	{
		guiling();   //????
		sum = sum + a[cishu][cishu];  
		xiaojian(cishu);
	}
	cout << sum << endl;  //????
	}
	return 0;
}

void guiling()
{
	int i = 0, j = 0, k = 0;
	int flag = 0;
	int min = 1000;
	int p = 0;
	for (p = 0; p <= g_n - 1; p++)  
	{
		flag = 0;
		min = 1000;
		if (a[p][0] >= 0) //????????????
		{
			for (i = 0; i <= g_n - 1; i++) //????
			{
				flag = 0;
				min = 1000;
				for (j = 0; j <= g_n - 1; j++)
				{
					if (a[i][j] < 0) //??????????????
						continue;
					if (a[i][j] == 0)  //???????????
					{
						flag = 1;
						break;
					}
					if (a[i][j] < min)
						min = a[i][j];
				}
				if (!flag)  //??
				{
					for (k = 0; k <= g_n - 1; k++)
					{
						a[i][k] = a[i][k] - min;
					}
				}
			}
			for (j = 0; j <= g_n - 1; j++) //???????
			{
				flag = 0;
				min = 1000;
				for (i = 0; i <= g_n - 1; i++)
				{
					if (a[i][j] < 0)  //??????????????
						continue;
					if (a[i][j] == 0)  //???????????
					{
						flag = 1;
						break;
					}
					if (a[i][j] < min)
						min = a[i][j];
				}
				if (!flag)  //??
				{
					for (k = 0; k <= g_n - 1; k++)
					{
						a[k][j] = a[k][j] - min;
					}
				}
			}
		}
	}
}
void xiaojian(int cishu)
{
	int i, j;
	for (i = 0; i <= g_n - 1; i++)  //???cishu??????????
	{
		a[i][cishu] = -1;
	}
	for (j = 0; j <= g_n - 1; j++)
	{
		a[cishu][j] = -1;
	}
}
int main()

{
	int n;//???????????????
	cin>>n;
	int i,j,k,m;//????
	int t=0;//???????
	int a[100][100];
	int s=0;//a[1][1]??
	for(k=0;k<n;k++)
	{
		for(i=0;i<n;i++)
			{
				for(j=0;j<n;j++)
				cin>>a[i][j];//????
			}
		for(m=1;m<=n-1;m++)//?m?????????
		{


					for(i=0;i<n-m+1;i++)
					{
						t=a[i][0];
						for(j=1;j<n-m+1;j++)
						{
							if(a[i][j]<t)
								t=a[i][j];
						}
						for(j=0;j<n-m+1;j++)
							a[i][j]=a[i][j]-t;
					}
					for(j=0;j<n-m+1;j++)
							{
								t=a[0][j];
								for(i=1;i<n-m+1;i++)
								{
									if(a[i][j]<t)
										t=a[i][j];
								}
								for(i=0;i<n-m+1;i++)
									a[i][j]=a[i][j]-t;//?????????? ????????????????????????? ????????????????????????? ??0? ????????????????????????? ????????????????????????? ??????????????0?

							}
					s=s+a[1][1];//??a[1][1]
					for(i=0;i<n;i++)
					{
						for(j=1;j<n-m;j++)
							a[i][j]=a[i][j+1];//?????
					}
					for(j=0;j<n-m;j++)
					{
						for(i=1;i<n-m;i++)
							a[i][j]=a[i+1][j];//?????
					}
		}
		cout<<s<<endl;
		s=0;


	}
	return 0;

}
int main()
{
	int nn, n, i, j, k, min[100], maze[100][100], sum;
	cin >> nn;
	for (k = 0; k < nn; k ++)
	{
		sum = 0;
		n = nn;
		for (i = 0; i < nn; i ++)
			for (j = 0; j < nn; j ++)
				cin >> maze[i][j];
		while (n > 1)
		{
		for (i = 0; i < n; i ++)
		{
			min[i] = maze[i][0];
			for (j = 1; j < n; j ++)
				min[i] = min[i] < maze[i][j] ? min[i] : maze[i][j];
		}
		for (i = 0; i < n; i ++)
			for (j = 0; j < n; j ++)
				maze[i][j] -=min[i];
		for (j = 0; j < n; j ++)
		{
			min[j] = maze[0][j];
			for (i = 1; i < n; i ++)
				min[j] = min[j] < maze[i][j] ? min[j] : maze[i][j];
		}
		for (j = 0; j < n; j ++)
			for (i = 0; i < n; i ++)
				maze[i][j] -=min[j];
		sum += maze[1][1];
		for (i = 1; i < n - 1; i ++)
			maze[i][0] = maze[i + 1][0];
		for (j = 1; j < n - 1; j ++)
			maze[0][j] = maze[0][j + 1];
		for (i = 1; i < n - 1; i ++)
			for (j = 1; j < n - 1; j ++)
				maze[i][j] = maze[i + 1][j + 1];
		n--;
		}
		cout << sum << endl;
	}
	return 0;
}
/* homework2.cpp
 *
 *  Created on: 2012-11-10
 *      Author: Lixurong
 */

int a[101][101], sum=0;

void zero( int n )
{
	for( int i=0; i<n; i++ )
	{
		int min;
		min=a[i][0];
		for( int j=0; j<n; j++ )
		{
			if( a[i][j]<min )
			{
				min = a[i][j];
			}
		}
		for( int j=0; j<n; j++ )
		{
			a[i][j]-=min;
		}
	}
	for( int j=0; j<n; j++ )
	{
		int min2;
		min2=a[0][j];
		for( int i=0; i<n; i++ )
		{
			if( a[i][j]<min2 )
			{
				min2 = a[i][j];
			}
		}
		for( int i=0; i<n; i++ )
		{
			a[i][j]-=min2;
		}
	}
}

void subtract( int n )
{
	if( n>2 )
	{
		for( int j=2; j<n; j++ )
		{
			a[0][j-1]=a[0][j];
		}
		for( int i=2; i<n; i++ )
		{
			a[i-1][0]=a[i][0];
		}
		for( int i=2; i<n; i++ )
		{
			for( int j=2; j<n; j++ )
			{
				a[i-1][j-1]=a[i][j];
			}
		}
	}
}

void process( int n )
{
	if( n!=1 )
	{
	    zero(n);
	    sum += a[1][1];
	    subtract(n);
	    process(n-1);
	}
}
int main()
{
	int n;
	cin >> n;
	for( int p=0; p<n; p++ )
	{
		for( int i=0; i<n; i++ )
		{
			for( int j=0; j<n; j++ )
			{
				cin >> a[i][j];
			}
		}
		process(n);
		cout << sum;
		if( p!=n-1 )
			cout << endl;
		sum=0;
	}

}
int a[111][111];
int n; 

int xiao(int size);

int sum()
{
    int temp=0;
    for(int siz=n;siz>=2;siz--)
    {
        temp+=xiao(siz);
    }
    return temp;
}

int xiao(int size)
{
    for(int i=1;i<=size;i++)
    {
        int tempmin=100000;
        for(int j=1;j<=size;j++)
            if(a[i][j]<tempmin)
            tempmin=a[i][j];
        for(int j=1;j<=size;j++)
            a[i][j]-=tempmin;
    }
    for(int i=1;i<=size;i++)
    {
        int tempmin=100000;
        for(int j=1;j<=size;j++)
            if(a[j][i]<tempmin)
            tempmin=a[j][i];
        for(int j=1;j<=size;j++)
            a[j][i]-=tempmin;
    }

    int daan=a[2][2];
    
    for(int i=1;i<=n;i++)
        for(int j=2;j<n;j++)
            a[i][j]=a[i][j+1];
    for(int i=1;i<n;i++)
        for(int j=2;j<n;j++)
            a[j][i]=a[j+1][i];
   return daan;

}

int main()
{
    cin>>n;
    for(int t=1;t<=n;t++)
    {
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                cin>>a[i][j];
        cout<<sum()<<endl;        
    }
    
    
    
    return 0;
}
/*
 * 6.cpp
 *
 *  Created on: 2011-11-6
 *      Author: b
 */

int main()
{
	int n,N,sum=0,min;         //n:?????n?n*n??? N??????????? sum:??  min:????????????
	cin>>n;
	int jz[n][n][n];
	int i,j,k,t;   //????

	for(k=0;k<n;k++){  //?????k+1???
		for(i=0;i<n;i++){
			for(j=0;j<n;j++){
				cin>>jz[k][i][j];
			}
		}
	}

	for(k=0;k<n;k++){  //?????k+1???
		sum=0; N=n;

		for(t=1;t<n;t++){  //???????t????t????n-1

			for(i=0;i<N;i++){   //?????????????????????????
				min=jz[k][i][0];
				for(j=0;j<N;j++){
					if(jz[k][i][j]<min) min=jz[k][i][j];
				}
				for(j=0;j<N;j++){
					jz[k][i][j]=jz[k][i][j]-min;
				}
			}

			for(j=0;j<N;j++){   //?????????????????????????
				min=jz[k][0][j];
				for(i=0;i<N;i++){
					if(jz[k][i][j]<min) min=jz[k][i][j];
				}
				for(i=0;i<N;i++){
					jz[k][i][j]=jz[k][i][j]-min;
				}
			}

			sum=sum+jz[k][1][1];  //????????

			for(i=1;i<N-1;i++){
				for(j=0;j<N;j++) jz[k][i][j]=jz[k][i+1][j];    //??2?,?2???
			}

			for(j=1;j<N-1;j++){
				for(i=0;i<n;i++) jz[k][i][j]=jz[k][i][j+1];
			}

			N=N-1;

	    }
		cout<<sum<<endl;
	}
	return 0;
}
int main()
{
	int n,a[100][100],sum,min,i,j,p,k,(*q)[100];
	q=a;
	cin>>n;
	for(p=0;p<n;p++)
	{
		sum=0;
		for(i=0;i<n;i++)
			for(j=0;j<n;j++)
				cin>>*(*(q+i)+j);
		for(k=n;k>=2;k--)
		{
		for(i=0;i<k;i++)
		{
			for(j=0;j<k;j++)
			{
				if(j==0)
					min=*(*(q+i)+j);
				else
				{
					if(*(*(q+i)+j)<min)
						min=*(*(q+i)+j);
				}
			}
			for(j=0;j<k;j++)
			{
				*(*(q+i)+j)=*(*(q+i)+j)-min;
			}
		}
		for(i=0;i<k;i++)
		{
			for(j=0;j<k;j++)
			{
				if(j==0)
					min=*(*(q+j)+i);
				else
				{
					if(*(*(q+j)+i)<min)
						min=*(*(q+j)+i);
				}
			}
			for(j=0;j<k;j++)
			{
				*(*(q+j)+i)=*(*(q+j)+i)-min;
			}
		}
		sum+=*(*(q+1)+1);
		for(i=1;i<k-1;i++)
		{
			*(*(q+0)+i)=*(*(q+0)+i+1);
		}
		for(i=1;i<k-1;i++)
		{
			*(*(q+i)+0)=*(*(q+i+1)+0);
		}
		for(i=1;i<k-1;i++)
			for(j=1;j<k-1;j++)
			{
				*(*(q+i)+j)=*(*(q+i+1)+j+1);
			}
		}
		cout<<sum<<endl;
	}
	return 0;
}
int main()	{
	int n;
	cin >> n;
	int i = 0, j = 0;
	int a[105][105] = {0};
	while(cin >> a[0][0])	{
		for(i = 0; i < n; ++i)	{
			for(j = 0; j < n; ++j)	{
				if(i == 0 && j == 0)
					continue;
				cin >> a[i][j];
			}
		}

		int tmp = n;
		int sum = 0;
		while(--tmp)	{
			int tmp_min;
			//???
			for(i = 0; i < tmp+1; ++i)	{
				tmp_min = 600000;
				for(j = 0; j < tmp+1; ++j)	{
					if(tmp_min > a[i][j])
						tmp_min = a[i][j];
				}
				if(tmp_min)	{
					for(j = 0; j < tmp+1; ++j)	{
						a[i][j] -= tmp_min;
					}
				}
			}
			//???
			for(j = 0; j < tmp+1; ++j)	{
				tmp_min = 600000;
				for(i = 0; i < tmp+1; ++i)	{
					if(tmp_min > a[i][j])
						tmp_min = a[i][j];
				}
				if(tmp_min)	{
					for(i = 0; i < tmp+1; ++i)	{
						a[i][j] -= tmp_min;
					}
				}
			}
			sum += a[1][1];
			//???n-1
			for(i = 2; i < tmp+1; ++i)	{
				a[0][i-1] = a[0][i];
				a[i-1][0] = a[i][0];
			}
			for(i = 2; i < tmp+1; ++i)	{
				for(j = 2; j < tmp+1; ++j)	{
					a[i-1][j-1] = a[i][j];
				}
			}
		}
		cout << sum << endl;
	}
	return 0;
}
/*
 * 6.cpp
 *
 *  Created on: 2011-12-31
 *      Author: 2011
 */

int main()
{
	int n, i, j, k;
	cin >> n;
	int input[n][n];

	int time;
	for (time = 1; time <= n; time++) {
		int (*p)[n] = input;
		for (i = 0; i < n; i++) {
			for (j = 0; j < n; j++) {
				cin >> *(*(p + i) + j);
			}
		}

		int min, N = n, sum = 0;

		for (k = 1; k <= n - 1; k++) {
			for (i = 0; i < N; i++) {
				min = 10000;
				for (j = 0; j < N; j++) {
					if (*(*(p + i) + j) < min) min = *(*(p + i) + j);
				}

				for (j = 0; j < N; j++) {
					*(*(p + i) + j) = *(*(p + i) + j) - min;
				}
			}

			for (j = 0; j < N; j++) {
				min = 10000;
				for (i = 0; i < N; i++) {
					if (*(*(p + i) + j) < min) min = *(*(p + i) + j);
				}

				for (i = 0; i < N; i++) {
					*(*(p + i) + j) = *(*(p + i) + j) - min;
				}
			}
			sum = sum + *(*(p + 1) + 1);

			for (i = 1; i < N - 1; i++) {
				for (j = 0; j < N; j++) {
					*(*(p + i) + j) = *(*(p + i + 1) + j);
				}
			}

			for (j = 1; j < N - 1; j++) {
				for (i = 0; i < N; i++) {
					*(*(p + i) + j) = *(*(p + i) + j + 1);
				}
			}
			N--;
		}
		cout << sum << endl;
	}
	return 0;
}
int main()
{
	int a[200][200] = {{0},{0}},i,j = 0,sum,q = 0,k,n,m,s;
	cin >> n;
	for (k = 1; k <= n;k++)
	{
		sum = 0;
		for (i = 1; i <= n; i++)
			for (j = 1; j <= n; j++)
				cin >> a[i][j];

		for (s = 0; s < n; s++)
		{

		for (i = 1; i <= n - s; i++)
		{
			m = a[i][1];
			for (j = 1; j <= n - s; j++)
			{
				if (a[i][j] < m)
				{
					m = a[i][j];
				}
			}
			for (j = 1; j <= n - s; j++)
			{
				a[i][j] = a[i][j] - m;
			}
		}
		
		for (j = 1; j <= n - s; j++)
		{
			m = a[1][j];
			for (i = 1; i <= n - s; i++)
			{
				if (a[i][j] < m)
				{
					m = a[i][j];
				}
			}
			for (i = 1; i <= n - s; i++)
			{
				a[i][j] = a[i][j] - m;
			}
		}

		sum = sum + a[2][2];
		for (i = 1; i <= n - s; i++)
		{
			for (j = 2; j <= n;j++)
			{
				a[i][j] = a[i][j+1];
			}
		}
		for (j = 1; j <= n - s; j++)
		{
			for (i = 2; i <= n;i++)
			{
				a[i][j] = a[i+1][j];
			}
		}

		}
		cout << sum << endl;
	}
	return 0;
}
int a[100][100];
int total;

void slice(int);
void zero(int n)
{
    for (int i = 0; i < n; i++) {
        int min = a[i][0];
        for (int j = 0; j < n; j++) {
            if (a[i][j] < min) {
                min = a[i][j];
            }
        }
        for (int j = 0; j < n; j++) {
            a[i][j] -= min;
        }
    }
    for (int i = 0; i < n; i++) {
        int min = a[0][i];
        for (int j = 0; j < n; j++) {
            if (a[j][i] < min) {
                min = a[j][i];
            }
        }
        for (int j = 0; j < n; j++) {
            a[j][i] -= min;
        }
    }
    slice(n);
}

void slice(int n)
{
    total += a[1][1];
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (j > 0 && i > 0) {
                a[i][j] = a[i+1][j+1];
            } else if (j > 0) {
                a[i][j] = a[i][j+1];
            } else if (i > 0) {
                a[i][j] = a[i+1][j];
            }
        }
    }
    n--;
    if (n == 1) {
        return;
    }
    zero(n);
}

int main(int argc, const char * argv[])
{
    int n;
    cin >> n;
    for (int i = 0; i < n; i++) {
        memset(a, 0, 100*100*sizeof(int));
        total = 0;
        for (int j = 0; j < n; j++) {
            for (int k = 0; k < n; k++) {
                cin >> a[j][k];
            }
        }
        zero(n);
        cout << total << endl;
    }
}
int a[200][200];
int minhang(int hang,int geshu)
{
    int i;
    
    int min=*(*(a+hang)+1);
    for(i=1;i<=geshu;i++)
    {
        if(*(*(a+hang)+i)<min) min=*(*(a+hang)+i);
    }
    return min;
}
int minlie(int lie,int geshu)
{
    int i;
    int min=*(*(a+1)+lie);
    for(i=1;i<=geshu;i++)
    {
        if(*(*(a+i)+lie)<min) min=*(*(a+i)+lie);
    }
    return min;
}
int main()
{


    int n,x,i,j;
    cin>>n;

    for(x=1;x<=n;x++)
    {
        
        memset(a,0,sizeof a);

        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++) cin>>*(*(a+i)+j);

        }
        int sum=0;
        for(int m=0;m<n-1;m++)
        {
            for(int mm=1;mm<=n-m;mm++)
            {
                int Minhang=minhang(mm,n-m);
                for(i=1;i<=n-m;i++)
                *(*(a+mm)+i)=*(*(a+mm)+i)-Minhang;
                
            }
            for(int mm=1;mm<=n-m;mm++)
            {
                int Minlie=minlie(mm,n-m);
                for(i=1;i<=n-m;i++)
                *(*(a+i)+mm)=*(*(a+i)+mm)-Minlie;
                
            }


            sum+=*(*(a+2)+2);
            for(int ii=1;ii<=n-m;ii++)
            {
                for(i=3;i<=n-m;i++)
                *(*(a+ii)+i-1)=*(*(a+ii)+i);
                
            }
            for(int ii=1;ii<=n-m;ii++)
            {
                for(i=3;i<=n-m;i++)
                *(*(a+i-1)+ii)=*(*(a+i)+ii);
                
            }

        }
        cout<<sum<<endl;




    }



    return 0;


}
int row(int a[][100],int l,int m)
{
	int i,min=a[m][0];
	for(i=0;i<l+1;i++)
		if(min>a[m][i]) min=a[m][i];
	return min;
}
int line(int a[][100],int l,int m)
{
	int i,min=a[0][m];
	for(i=0;i<l+1;i++)
		if(min>a[i][m]) min=a[i][m];
	return min;
}
void move(int a[][100],int l)
{
	int i,j;
	for(i=1;i<l+1;i++)
	{a[0][i]=a[0][i+1];a[i][0]=a[i+1][0];}
	for(i=1;i<l+1;i++)
		for(j=1;j<l+1;j++)
		a[i][j]=a[i+1][j+1];
}
int main ()
{
	int i,j,k,n;
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		int l,a[100][100]={0},sum=0,x,y;
		for(j=0;j<n;j++)
			for(k=0;k<n;k++)
				scanf("%d",&a[j][k]);
		for(l=n-1;l>=0;l--)
		{
			for(x=0;x<l+1;x++)
			{
				int d=row(a,l,x);
				for(y=0;y<l+1;y++)
					a[x][y]=a[x][y]-d;
			}
			for(x=0;x<l+1;x++)
			{
				int e=line(a,l,x);
				for(y=0;y<l+1;y++)
			        a[y][x]=a[y][x]-e;
			}
			sum+=a[1][1];	
			move(a,l);
		}
		printf("%d\n",sum);
	}
}
// ?????????.cpp : ??????????????
//


int a[100][100];
int n;

void scan(int m)
{
	int i,j;
	for(i=0;i<=m-1;++i)
	{
		for(j=0;j<=m-1;++j)
		{
			scanf("%d",&a[i][j]);
		}
	}
}

int minofc(int m)
{
	int i,min=a[m][0];
	for(i=0;i<=n-1;++i)
	{
		if(a[m][i]<min) min=a[m][i];
	}
	return min;
}

int minofr(int m)
{
	int i,min=a[0][m];
	for(i=0;i<=n-1;++i)
	{
		if(a[i][m]<min) min=a[i][m];
	}
	return min;
}

void tozero()
{
	int i,j;
	for(i=0;i<=n-1;++i)
	{
		int min=minofc(i);
		for(j=0;j<=n-1;++j) 
		{
			a[i][j]=a[i][j]-min;
		}
	}
	for(j=0;j<=n-1;++j)
	{
		int min=minofr(j);
		for(i=0;i<=n-1;++i)
		{
			a[i][j]=a[i][j]-min;
		}
	}
}

void eliminate()
{
	int i,j;
	for(i=1;i<=n-2;++i)
	{
		a[0][i]=a[0][i+1];
		a[i][0]=a[i+1][0];
	}
	for(i=1;i<=n-2;++i)
	{
		for(j=1;j<=n-2;++j)
		{
			a[i][j]=a[i+1][j+1];
		}
	}
}

int main()
{
	scanf("%d",&n);
	int p=n;
	int i,j;
	for(i=1;i<=n;++i)
	{
		int sum=0;
		scan(n);
		do
		{
			tozero();
			sum=sum+a[1][1];
			eliminate();
			n--;
		}while(n>1);
		printf("%d\n",sum);
		n=p;
	}
	return 0;
}