semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	int m,n,i,j,k;
	int *a[100];
	scanf("%d%d",&m,&n);
	for(i=0;i<m;i++)
		*(a+i)=(int*)malloc(n*sizeof(int));
	for(i=0;i<m;i++)
		for(j=0;j<n;j++)
			scanf("%d",*(a+i)+j);
	for(k=0;k<n;k++)
	{
		i=0;j=k;
		do
		{
			printf("%d\n",*(*(a+i)+j));
			i++;j--;
		}while(j>=0&&i<m);
	}
	if(m>=2)
	{
		for(k=1;k<m;k++)
		{
			i=k;j=n-1;
			do
			{
			    printf("%d\n",*(*(a+i)+j));
			    i++;j--;
			}while(j>=0&&i<m);
		}
	}
	return 0;
}
int main()
{
	int row, col, array[99][99], i, j, k;
	cin >> row >> col;
	for (i = 0; i < row; i++)
		for (j = 0; j < col; j++)
			cin >> array[i][j];
	i = 0;
	j = 0;
	for (k = 0; k <= col -1; k++)
	{
		j = k;
		i = 0;
		do
		{
			cout << array[i][j] << endl;
			j = j - 1;
			i = k - j;
		}while(i != row && j != -1);
	}
	for (k = col; k <= col + row -2; k++)
	{
		j = col - 1;
		i = k - j;
		do
		{
			cout << array[i][j] << endl;
			j = j - 1;
			i = i + 1;
		}while(i != row && j != -1);
	}
	return 0;
}
int main()
{
	int array[100][100];
	int row,col;
        int i,j,he;

	scanf("%d%d",&row,&col);
	for(i=0;i<row;i++)
	{
		for(j=0;j<col;j++)
		{
			scanf("%d",&array[i][j]);
		}
	}

	for(he=0;he<row+col-1;he++)
	{
		for(j=he;j>=0;j--)
		{
			if(j>=col)
			{
				continue;
			}
			i=he-j;
			if(i>=row)
			{
				continue;
			}
			printf("%d\n",array[i][j]);
		}
	}
	return 0;
}
int main()
{
    int h,l,i,j,k,m=0;
	int a[100][100];
	scanf("%d %d",&h,&l);
	for(i=0;i<h;i++){
		for(j=0;j<l;j++){
		    scanf("%d",&a[i][j]);
		}
	}
	for(k=0,i=0,j=0;;){
	    printf("%d\n",a[j][i]);
		if(i==(l-1)&&j==(h-1)) break;
	    if(i==0||j==(h-1)){
			j=0;
			k++;
			if(k<l){
			i=k;
			}
			else{
			i=l-1;
			m++;
			j=m;
			}
		}
		else{
		    i-=1;
			j+=1;
		}
	}
return 0;
}
void main()
{
	int a[100][100]={0};
	int m,n ,i,j;
	scanf("%d %d",&m,&n);
	for(i=j=0;i<m;i++)
		for(j=0;j<n;j++)
			scanf("%d",&a[i][j]);

	for(i=j=0;i<=n+m-2;i++)
		for(j=0;j<=i;j++)
			if(j>=0&&j<m&&i-j>=0&&i-j<n)
				printf("%d\n",a[j][i-j]);
}
void main()
{
	int col,row,i,j,n,a[101][101],t;
	scanf("%d%d",&row,&col);
	for(i=0;i<row;i++)
		for(j=0;j<col;j++) scanf("%d",&a[i][j]);
	for(i=0;i<=row+col-2;i++)
	{
		for(j=0;j<=i;j++)
		{
			if(j<row&&(i-j)<col)
			printf("%d\n",a[j][i-j]);
		}
	}
	scanf("%d",&t);
}
int main(){
    int r,c,a[99][99];
    cin>>r>>c;
    for(int i=0;i<r;++i)
        for(int j=0;j<c;++j)
            cin>>a[i][j];
    for(int j=0;j<c;++j)
        for(int x=j,y=0;x>=0&&y<r;--x,++y)
            cout<<a[y][x]<<endl;
    for(int i=1;i<r;++i)
        for(int y=i,x=c-1;x>=0&&y<r;--x,++y)
            cout<<a[y][x]<<endl;
}
int main()
{
	int a[100][100],i,j,m,l,n,k,t;
	int (*p)[100]=a;
	int *q=a[0];
	int row,column;
	cin>>row>>column;
	for(j=0;j<row;j++)
        {
            q=*(a+j);
            for(l=0;l<column;l++)
                cin>>*(q+l);//??
        }
	for(i=0;i<=row+column-2;i++)
	{
		for(k=0;k<row;k++)
		{
			for(t=0;t<column;t++)
			{
				if(k+t==i)
				{cout<<*(*(p+k)+t)<<endl;}//????
			}
		}
	}
	return 0;
}
void main()
{
	int i,j,n,m,a[100][100],l;
	scanf("%d %d",&n,&m);
	for(i=0;i<100;i++)
		for(j=0;j<100;j++)a[i][j]=0;
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)scanf("%d",&a[i][j]);
	l=n+m;
	for(i=0;i<=l;i++)
	{
		for(j=0;j<=i;j++)
		{
			if(j<n&&(i-j)<m)
			printf("%d\n",a[j][i-j]);
		}
	}
}
int main()
{
    int num[101][101];
    int i,j,row,col;
    //freopen("1.txt","r",stdin);
    scanf("%d%d",&row,&col);
    for(i=1;i<=row;i++)
    for(j=1;j<=col;j++)
    scanf("%d",&num[i][j]);
    printf("%d",num[1][1]);
    for(i=3;i<=col+row;i++)
    {
                           for(j=1;j<i;j++)
                           if(j<=row&&i-j<=col)
                           printf("\n%d",num[j][i-j]);
    }
    //getch();
    return 0;
}
int main()
{
    int a[101][101];
    int row,col;
    int i,j;
    int x;
    scanf("%d%d",&row,&col);
    for(i=0;i<row;i++)
    {
        for(j=0;j<col;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
    if(row<col)
    {
        for(i=0;i<row;i++)
        {
            for(j=0;j<=i;j++)
            {
                printf("%d\n",a[0+j][i-j]);
            }
        }
        for(i=0;i<col-row-1;i++)
        {
            for(j=0;j<row;j++)
            {
                printf("%d\n",a[j][row+i-j]);
            }
        }
        for(i=0;i<row;i++)
        {
            for(j=0;j<row-i;j++)
            {
                printf("%d\n",a[i+j][col-1-j]);
            }
        }
    }
    else
    {
        for(i=0;i<col;i++)
        {
            for(j=0;j<=i;j++)
            {
                printf("%d\n",a[0+j][i-j]);
            }
        }

        for(i=0;i<row-col-1;i++)
        {
            for(j=0;j<col;j++)
            {
                printf("%d\n",a[i+j+1][col-j-1]);
            }
        }
        if(row==col)
        {
            x=1;
        }
        else
        {
            x=0;
        }

        for(i=x;i<col;i++)
        {
            for(j=0;j<col-i;j++)
            {
                printf("%d\n",a[row-col+i+j][col-j-1]);
            }
        }


    }
  return 0;

}
//***********************************************************************
//??????????
//??????
//***********************************************************************
int  array[100][100];
void out1(int row, int col)
{
	int *p;                                       //????
	for(int i = 0; i < row; i++)                  //?????
	{
		p = array[i];                             
		cin>>*p;
		for(int j = 1; j < col; j++)
			cin>>*++p;
	}
	for(int i = 0; i < col; i++)                  //????????????????????
	{
		p = &array[0][i];                         //?????
		cout<<*p<<endl;
		for(int j = 1; j <= i; j++)
		{
			p = p + 99;
			cout<<*p<<endl;
		}
	}
	for(int i = 1; i < row - col; i++)
	{
		p = array[i];
		p = p + col - 1;
		cout<<*p<<endl;
		for(int j = 1; j < col; j++)
		{
			p = p + 99;
			cout<<*p<<endl;
		}
	}
	for(int i = row - col; i < row; i++)
	{
		p = array[i];
		p = p + col - 1;
		cout<<*p<<endl;
		for(int j = 1; j < row - i; j++)
		{
			p = p + 99;
			cout<<*p<<endl;
		}
	}
}
void out2(int row, int col)
{
	int *p;
	for(int i = 0; i < row; i++)
	{
		p = array[i];
		cin>>*p;
		for(int j = 1; j < col; j++)
			cin>>*++p;
	}
	for(int i = 0; i < row; i++)
	{
		p = &array[0][i];
		cout<<*p<<endl;
		for(int j = 1; j <= i; j++)
		{
			p = p + 99;
			cout<<*p<<endl;
		}
	}
	for(int i = row; i < col; i++)
	{
		p = array[0];
		p = p + i;
		cout<<*p<<endl;
		for(int j = 1; j < row; j++)
		{
			p = p + 99;
			cout<<*p<<endl;
		}
	}
	for(int i = 1; i < row ; i++)
	{
		p = array[i];
		p = p + col - 1;
		cout<<*p<<endl;
		for(int j = 1; j < row - i; j++)
		{
			p = p + 99;
			cout<<*p<<endl;
		}
	}
}
int main()
{
	int row, col;
	cin>>row>>col;
	if(row > col)
		out1(row, col);
	else 
		out2(row, col);
	return 0;
}
int a[100][100],r,c;
int judge(int i,int c)
{
	if (i-c>=0) return i-c+1;
	else return 0;
}
int main()
{
	cin>>r>>c;
	for(int i=0;i<r;i++){
		for(int j=0;j<c;j++){
			cin>>*(*(a+i)+j);}}
	for(int i=0;i<r+c-1;i++){
		for(int j=judge(i,c);j<=i&&j<r&&i-j<c;j++){
			cout<<*(*(a+j)+i-j)<<endl;}}
	return 0;
}
int main()
{
	int a[100][100],i,j,p,m,n;
	scanf("%d%d",&m,&n);
	for(i=0;i<m;i++)
	{
		for(j=0;j<n;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	for(p=0;p<=m+n-2;p++)
	{   
		for(i=0;i<=p;i++)
		{
			if(i<m&&p-i<n)
				printf("%d\n",a[i][p-i]);
			else continue;
		}
	}
	return 0;
}
int main()
{
	int b,c,i,j,m,t,p;
	int a[100][100];
	scanf("%d%d",&b,&c);
	for(i=0;i<=b-1;i++)
	{
		for(j=0;j<=c-1;j++)
		scanf("%d",&a[i][j]);
	}
	for(m=0;m<=b+c-2;m++)
	{
	    if(m<b&&m<c)
	    {
	        for(i=0;i<=m;i++)
	        printf("%d\n",a[i][m-i]);
	    }
	    else if(m>=b&&m>=c)
	    {
	        for(i=m-c+1;i<=b-1;i++)
	        printf("%d\n",a[i][m-i]);
	    }
	    else
	    {
	        if(b<c)
	        {
	            for(i=0;i<=b-1;i++)
	        printf("%d\n",a[i][m-i]);

	        }
	        else
	        {
	            for(i=m-c+1;i<=m;i++)
                printf("%d\n",a[i][m-i]);
            }
	    }
	}
	return 0;
}
int main()
{
    int n , m , i , j , a[100][100] ;
    cin>>n>>m;
    for( i=1 ; i<=n ; i++ )
     for( j=1 ; j<=m ; j++ ) scanf("%d",&a[i][j]);
     
    for( i=2 ; i<=n+m ; i++ )
     for( j=max(1,i-m) ; j<=min(n,i-1) ; j++ ) printf("%d\n",a[j][i-j]);
}
int main()
{
	int row,col,i,j,m,p;
	scanf("%d %d",&row,&col);
	int a[100][100];
	for (i=0;i<row;i++)
	{
		for (j=0;j<col;j++)
		{
			scanf("%d",&a[i][j]);
		}
		scanf("\n");
	}


	for (m=0;m<=col+row-2;m++)
	{
		if (m<col)
		{
			for(p=0;p<=row-1&&p<=m;p++)
			{
			
			printf("%d\n",a[p][m-p]);
			}
		}
		
	
		if (m>=col)
		{
			for(p=m-col+1;p<=m&&p<=row-1;p++)
			{
			
			printf("%d\n",a[p][m-p]);
			}
		}

	}

	return 0;
}
const int maxn = 100; 

int main() 
{
	int line,row; 
	int num[maxn][maxn]; 
	cin >> line >> row; 

	int nowline, nowrow; 
	int step; 
	int i , j; 
	for ( i = 0; i!=line; i++) 
		for ( j = 0; j!=row; j++) cin>>num[i][j]; 
	for (step = 0; step != line+row-1; step++)
	{
		nowline = (step >= row? step-row+1 : 0); 
		nowrow = (step >=row? row-1 : step); 
		while (nowline != line && nowrow != -1)
		{
			cout << num[nowline][nowrow] << endl; 
			nowline++; nowrow--; 
		}
	}
	return 0; 

}
//#include<stdlib.h>
//#include<math.h>
int main()
{
	int row,col,i,j;
	int a[101][101];
	scanf("%d %d",&row,&col);
	for(i=0;i<row;i++){
		for(j=0;j<col;j++){
			scanf("%d",&(a[i][j]));
		}
	}
	for(i=0;i<row+col;i++){
		if(i<col)
			j=0;
		else
			j=i-col+1;
		for(;j<=i && j<row;j++) {
			printf("%d\n",a[j][i-j]);
		}
	}
	return 0;
}
int main(){
	int a[100][100];
	int row,col;
	int i,j;
	int (*p)[100]=a;
	cin>>row>>col;
	for(i=0;i<row;i++)
		for(j=0;j<col;j++)
			cin>>*(*(p+i)+j);
	for(i=0;i<=row+col-2;i++)
	{
		if(i<col-1)
			for(j=0;j<=row-1&&j<=i;j++)cout<<*(*(p+j)+i-j)<<endl;
		else for(j=col-1;i-j<=row-1&&j>=0;j--)cout<<*(*(p+i-j)+j)<<endl;
	}
	return 0;
}
int main()
{
    int n,m; 
    cin>>m>>n;//m????n??? 
    int a[100][100];
    for(int i=0;i<m;i++)
    {
      for(int j=0;j<n;j++)
      cin>>a[i][j];
    }
    for(int i=0;i<m+n-1;i++)
    {
      for(int j=0;j<=i;j++)
      {
        if((j<m)&&(i-j<n))
        cout<<*(*(a+j)+i-j)<<endl;//????????? 
      }
    }
    return 0;
}
int main()
{
	int a[100][100];
	int m, n, i, j, r;
	long flag=0;
	scanf("%d %d",&m,&n);
	for (i=0;i<m;i++)
	{
		for (j=0;j<n;j++) scanf("%d",&a[i][j]);
	}
	for (r=0;r<m+n-1;r++)
	{
		for (i=0;i<=r&&flag<m*n;i++)
		{
			if (i<m&&r-i<n)
			{
				printf("%d\n",a[i][r-i]);
				flag++;
			}
		}
	}
	return 0;
}
void main()
{
	int row,col;
	int a[100][100];
	int i,j,n,duijiaoxian;
	scanf("%d %d",&row,&col);
	for(i=0;i<row;i++)
	{
		for(j=0;j<col;j++)
		{scanf("%d",&a[i][j]);}
	}
    duijiaoxian=row+col-2;
	for(n=0;n<=duijiaoxian;n++)
	{
		for(i=0;i<=n;i++)
		{
			if(0<=i && i<row && 0<=(n-i) && (n-i)<col)
			{printf("%d\n",a[i][n-i]);}
		}
	}
}
int main()
{
/*????row?col??????array????array[0][0]????????????????????????? 
????????????????row?col? 
???row??????col??????????????? 
??????row?col??0<row<100, 0<col<100?
????????????????????

3 4
1 2  4  7
3 5  8 10
6 9 11 12*/
	int n, m, i, j, shu[100][100],hang = 1, lie = 1, count,mark,zddjx, duijiao, jh = 1, jl = 1;
	cin >> n >> m;
	count = n * m;
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= m; j++)
		{
			cin >> shu[i][j];
		}
	}
	if (n == 1)
	{
		for (j = 1; j <= m; j++)
		{
			cout << shu[1][j] << endl;
		}
	}
	if (n == 1)
	{
		return 0;
	}
	if (m == 1)
	{
		for (j = 1; j <= n; j++)
		{
			cout << shu[j][1] << endl;
		}
		return 0;
	}
	if (m == 1)
	{
		return 0;
	}
	cout << shu[hang][lie] << endl;
	duijiao = hang + lie;
	count--;
	while (count != 0)  //?????????
	{ 
		duijiao++;   //?????????
		hang = jh;
		lie = duijiao - hang;
		if (lie == m)    //?????????????????+1
		{
			jh++;
		}
		while (lie >= jl)
		{
			cout << shu[hang][lie] << endl;   //???????
			count--;
			hang++;
			lie--;
		}
		if(hang == n + 1)
		{
			jl++;
		}
	}
	return 0;
}
int main()
{
	int row=0,col=0,i=0,j=0,k=0,temp=0;
	cin>>row>>col;
	int array[100][100];
	for(i=0;i<row;i++)
		for(j=0;j<col;j++)
			cin>>array[i][j];
	for(k=0;k<=col-1;k++)
		for(i=0;i<row&&k-i<col&&k-i>=0;i++){
			temp=array[i][k-i];
			cout<<array[i][k-i]<<endl;
		}
	for(k=col;k<=(col-1)+(row-1);k++)
		for(i=k-col+1;i<row&&k-i>=0;i++){
			temp=array[i][k-i];
			cout<<array[i][k-i]<<endl;
		}
	return 0;
}
void main()
{
	int row,col;
	scanf("%d%d",&row,&col);
	int i,j;
	int a[100][100]={0};
	for(i=0;i<row;i++)
	{
		for(j=0;j<col;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	if(row>=col)
	{
		for(i=0;i<row+col-1;i++)
		{
			if(i>=0&&i<col)
			{
			for(j=i;j>=0;j--)
			{
				printf("%d\n",a[i-j][j]);
			}
			}
			if(i>=col&&i<row)
			{
				for(j=col-1;j>=0;j--)
					printf("%d\n",a[i-j][j]);
			}
			if(i>row-1&&i<(row+col)-1)
			{
				for(j=col-1;j>i-row;j--)
					printf("%d\n",a[i-j][j]);
			}

		}
	}
	if(col>row)
	{
		for(j=0;j<row+col;j++)
		{
			if(j>=0&&j<row)
			{
			for(i=0;i<=j;i++)
			{
				printf("%d\n",a[i][j-i]);
			}
			}
			if(j>=row&&j<col)
			{
				for(i=0;i<row;i++)
					printf("%d\n",a[i][j-i]);
			}
			if(j>col-1&&j<(row+col)-1)
			{
				for(i=j-col+1;i<row;i++)
					printf("%d\n",a[i][j-i]);
			}

		}
	}
}
int main()
{
	int row;
	int col;
	int a[100][100];
	scanf("%d",&row);
	scanf("%d",&col);
	int i,j;
	for(i=0;i<row;i++)
	{
		for(j=0;j<col;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	int t;
	for(t=0;t<=row+col-2;t++)
	{
		if(t==0)
		{
			printf("\n%d",a[0][0]);
		}
		else if(t>0)
		{
			if(t<=col-1)
			{
				for(i=t;i>=0;i--)
				{
				    if(t-i>=0&&t-i<=row-1)
					{
						printf("\n%d",a[t-i][i]);

					}
				}
			}
			else
			{
				for(i=col-1;i>=0;i--)
				{
				    if(t-i>=0&&t-i<=row-1)
					{
						printf("\n%d",a[t-i][i]);

					}
				}

			}
			
		}
	}
	
return 0;
}
/*
 *??????????????.cpp
 *?????
 *????: 2012-12-12
 *???????row?col??????array????array[0][0]?????????????????????????
 */


int main(){
	int row, col, dia, array[101][101], i, j;		//????row???col?????????dia???array[101][101]?????i,j

	cin >> row >> col;						//???????
	for (i = 0; i < row; i++)
		for (j = 0; j < col; j++)
			cin >> *(*(array + i) + j);		//?????
	for (dia = 0; dia < row + col - 1; dia++)	//?????0?????row + col - 2
		for (i = 0; i <= dia; i++)				//?????0?????dia
		{
			if ((dia - i) < col && i < row)    	//????i????(dia - i)????????????????
			cout << *(*(array + i) + (dia - i)) << endl;
		}
	return 0;
}
int main() { 
     int row, col, i, j, temp_i, a[100][100]; 
     scanf("%d%d", &row, &col); 
     for(i=0;i<row;i++) 
          for(j=0;j<col;j++) 
               scanf("%d", &a[i][j]); 
     for(j=0;j<col;j++){
           for(i=0;i<=j&&i<row;i++) 
                 printf("%d\n", a[i][j-i]); 
     } 
     for(i=1;i<row;i++){ 
           temp_i=i;
           for(j=col-1;j>=0 && temp_i<row;j--){ 
                 printf("%d\n", a[temp_i][j]); 
                 temp_i++;
           } 
     } 
     return 0; 
}
void main()
{
	int a[MAXSIZE][MAXSIZE],i,j,row,col,n;
    scanf("%d%d",&row,&col);
	for(i=0;i<row;i++)
	{
		for(j=0;j<col;j++)
			scanf("%d",&a[i][j]);
    }
	for(n=0;n<=col+row-2;n++)
	{
		for(i=0;i<row;i++)
			if(i<=n&&i>n-col)
			printf("%d\n",a[i][n-i]);
	}
}
int main()
{
int c,r,s,a[100][100];
s=0;
scanf("%d %d",&r,&c);
for(int i=0;i<r;i++){
        for(int j=0;j<c;j++){
                scanf("%d",&a[i][j]);
                }
        }
while(c*r>=s){
for(int i=0;i<r;i++){
        for(int j=0;j<c;j++){
           if(i+j==s){
                     printf("%d\n",a[i][j]);
                     }    
                }
        }
        s++;
        }
int hou;
scanf("%d",&hou);
return 0;
}
int main()
{
	int r,c;
	cin>>r>>c;
	int a[r][c];
	for(int i=0;i<r;i++)
		for(int j=0;j<c;j++)
		{
			cin>>*(*(a+i)+j);
		}
	for(int k=0;k<r+c-1;k++)
	{
		if(k<c)
		{
			for(int i=0;i<r&&k-i>=0;i++)
				cout<<*(*(a+i)+k-i)<<endl;
		}
		else {
			for(int i=c-1;i>=0&&k-i<r;i--)
				cout<<*(*(a+k-i)+i)<<endl;
		}
	}
	return 0;
}
int matrix[100][100],row,col;
void display(int step)
{
    int x,y,i;
    if (step>row+col-1) return;
    if (step<col)
    {
        y=step-1;
        for (i=y;i>=0&&y-i<row;i--)
            cout<<matrix[y-i][i]<<endl;
    }
    else
    {
        x=step-col;
        for (i=x;i<row&&col-1+x-i>=0;i++)
            cout<<matrix[i][col-1+x-i]<<endl;
    }
    display(step+1);
}
int main()
{
    int i,j;
    cin>>row>>col;
    for (i=0;i<row;i++)
        for (j=0;j<col;j++)
            cin>>*(*(matrix+i)+j);
    display(1);
}
int main()
{
	int m,n,s,i,j,a[100][100],p,q,r,t;
	scanf("%d%d",&m,&n);
	s=m+n-2;
	for(i=0;i<m;i++){
		for(j=0;j<n;j++){
			scanf("%d",&a[i][j]);
		}
	}
	for(p=0;p<=s;p++){
		if(m>=n){
			if(p<=(n-1)){
				t=0;r=p;
			}
			else{
				if(p<=(m-1)){
					t=p-n+1;r=p;
				}
				else{
					t=p-n+1;r=m-1;
				}
			}
		}
		else{
			if(p<=(m-1)){
				t=0;r=p;
			}
			else{
				if(p<=(n-1)){
					t=0;r=m-1;
				}
				else{
					t=p-n+1;r=m-1;
				}
			}
		}
				for(q=t;q<=r;q++){
			printf("%d\n",a[q][p-q]);
		}
	}
	return 0;
}
int main()
{
	int L,R,i,j,k;
	cin>>R>>L;
	const int l=L;
	const int r=R;
	int a[r][l];
	for(i=0;i<r;i++)
		for(j=0;j<l;j++)
			cin>>a[i][j];
	for(k=0;k<l;k++)
	{
		for(i=0;(i<r)&&((k-i)>=0);i++)
				{
					cout<<a[i][k-i]<<endl;
				}
	}
	for(k=l;k<=l+r-2;k++)
	{
		for(i=l-1;(i>=0)&&((k-i)<r);i--)
					{
						cout<<a[k-i][i]<<endl;
					}

}
}
int array[100][100];
int main()
{
	int row,col,i,j,m;
	scanf("%d%d\n",&row,&col);
	for(i=0;i<row;i++)
	{
		for(j=0;j<col;j++)
			scanf("%d",&array[i][j]);
	}
	for(m=0;m<row+col-1;m++)
	{
		if(m<col)
		{
		for(i=0;i<=m&&i<row;i++)
			printf("%d\n",array[i][m-i]);
		}
		else
		{for(j=col-1;j>m-row&&j>=0;j--)
				printf("%d\n",array[m-j][j]);
		}

	}
	return 0;
}
int main()
{
    int *a,*a0,*b,*p;
    int row,col;
    int r,c,t,i;
    
    scanf("%d %d",&row,&col);
                        
    
    a=(int *)calloc(100,100*sizeof(int));
    
    a0=a;
    
    for(r=0;r<row;r++)
    {
     for(c=0;c<col;c++)
       {
       scanf("%d",a+r*col+c); 
       }  
    }
    
    
    
    a=a0;
    for(c=0;c<row+col-1;c++)
    {
     r=0;     t=c;
         for(i=0;i<row*col;i++)
          {
          if(0<=r&&r<row&&0<=t&&t<col)
          {
           printf("%d",*(a+r*col+t));
           if(r!=row-1||t!=col-1) printf("\n");
           }
           r++;t--;
          }
    }
    
}
int main()
{
	int row,col,sz[100][100],i,j;
	scanf("%d%d",&row,&col);
	for(i=0;i<row;i++)
	{
		for(j=0;j<col;j++)
		{
			scanf("%d",&sz[i][j]);
		}
	}
	for(i=0;i<col;i++)
	{
		for(j=0;j<i+1;j++)
		{
			if(j>=row)
			{
				break;
			}
			else
			{
				printf("%d\n",sz[j][i-j]);
			}
		}
	}
	for(i=1;i<row;i++)
	{
		for(j=0;j<col;j++)
		{
			if(i+j>=row)
			{
				break;
			}
			else
			{
			    printf("%d\n",sz[i+j][col-j-1]);
			}
		}
	}
	return 0;
}
int main()
{
	int row=0,col=0;
	int a[101][101];
	cin>>row>>col;
	for(int i=0;i<row;i++)
		for(int j=0;j<col;j++)
			cin>>a[i][j];
	for(int i=0;i<col;i++)
	{
		cout<<a[0][i]<<endl;
		for(int j=1;i-j>=0&&j<row;j++)
			cout<<a[j][i-j]<<endl;
	}
	for(int i=1;i<row;i++)
	{
		cout<<a[i][col-1]<<endl;
		for(int j=1;i+j<row&&j<=col-1;j++)
			cout<<a[i+j][col-1-j]<<endl;

	}
	return 0;
}
int main()
{
	int m,n,i,j,min;
	cin>>m>>n;
	int a[m][n];
	for (i=0;i<m;i++)
		for (j=0;j<n;j++)
			cin>>a[i][j];
	for (j=0;j<=n-1;j++)
		{min=(m-1>j? j:m-1);
	     for (i=0;i<=min;i++)                        //????????????????
			cout <<a[i][j-i]<<endl;}
	for (j=n;j<=m+n-2;j++)
		{min=(m-1>j? j:m-1);
		for (i=j-(n-1);i<=min;i++)                   //????????????????????????????????????
			cout <<a[i][j-i]<<endl;}
	return 0;
}
/*
 * ewszyszxbl.cpp
 * ??????????
 *  Created on: 2012-12-10
 *      Author: Salforever
 */

int main()
{
	int *p,row,col,array[105][105],i,j;//????
	cin >> row >> col;//???????
	for (i=1;i<=row;i++)//????
		for (j=1;j<=col;j++)
		{
			cin >> array[i][j];
		}
	for (j=1;j<=col;j++)//???????????
	{
		p=&array[1][j];
		for (i=1;i<=j&&i<=row;i++)
		{
			cout << *p << endl;
			p=p+104;
		}
	}
	for (i=2;i<=row;i++)//?????????????
	{
		p=&array[i][col];
		for (j=1;j<=col&&j+i<=row+1;j++)
		{
			cout << *p << endl;
			p=p+104;
		}
	}
	return 0;
}
int main()
{
	int a[101][101], row, col, i, j, k, sum;
	cin >> row >> col;
	sum = row + col;
	for (i = 1; i <= row; i++)
		for (j = 1; j <= col; j++)
			cin >> a[i][j];
	for (k = 2; k <= sum ; k++)
	{
		if (k  <= col + 1)
		{
			i = 1; 
			j = k - 1;
			do
			{
				cout << a[i][j] << endl;;
				i += 1;
				j -= 1;
			}
			while (i <= row && j >= 1);
		}
		else
		{
			i = k - col;
			j = k - i;
			do
			{
				cout << a[i][j] << endl;
				i += 1;
				j -= 1;
			}
			while (i <= row && j >= 1);
		}
	}

	return 0;
}
int main()
{
	int min(int a,int b);
	int max(int a,int b);
	int a[100][100],i,j,m,n,begin,end;
	scanf("%d%d",&m,&n);
	for (i=0;i<m;i++)
		for (j=0;j<n;j++)
			scanf("%d",&a[i][j]);
	for (i=0;i<=m+n-2;i++)
		for (j=max(0,i-n+1);j<=min(m-1,i);j++)
			printf("%d\n",a[j][i-j]);
	return 0;
}
int min(int a,int b)
{
	return a<b? a:b;
}
int max(int a,int b)
{
	return a>b? a:b;
}
void main()
{
	int i,j,n,row,col,a[1000][1000];
	scanf("%d%d",&row,&col);
	for(i=0;i<row;i++)
	{
		for(j=0;j<col;j++)
		{
			scanf("%d",&a[i][j]);
		}
	}
	for(n=0;n<=col-1;n++)
	{
		for(j=n;(j>=0)&&(n-j)<=(row-1);j--)
		{
			printf("%d\n",a[n-j][j]);
		}
	}
	for(n=col;n<=row+col-2;n++)
	{
		for(j=col-1;(j>=0)&&(n-j)<=(row-1);j--)
		{
			printf("%d\n",a[n-j][j]);
		}
		j=col-1;
	}
}
int main()
{
	int row,col;
	scanf("%d %d",&row,&col);
	int a[100][100]={0};
	int i,j;
	for(i=0;i<row;i++)
	{for(j=0;j<col;j++)scanf("%d",&a[i][j]);} //????

	int step=0;
	i=0;
	j=0;
	int t;

	if(row*col>0){printf("%d",a[0][0]);step++;}//????????????

	while(step<row*col)            //???
	{
		
		if(i+1<0||j-1<0)       //????????or???????
		{
			
			
			t=i;
			i=j;
			j=t+1;             //???????????????????????
			if(i<row&&j<col)   //??????????????????????...
			{printf("\n%d",a[i][j]);
			step++;}
		}
		else
		{
			i=i+1;
			j=j-1;
			if(i<row&&j<col)     //????????????????????
			{printf("\n%d",a[i][j]);
			step++;}
		}
		

	}
	
	return 0;
}
main()
{
      int row,col;
      int i,j,k,s,p,q;
      int a[100][100];
      scanf("%d%d",&row,&col);
      int temp_r,temp_c;
      for(p=0;p<row;p++)
      {
          for(q=0;q<col;q++)
          {
              scanf("%d",&a[p][q]);
          }
      }
      for(i=0;i<col;i++)
      {
          temp_r=0;temp_c=i;
          while(temp_r>=0&&temp_r<row&&temp_c>=0&&temp_c<col)
          {
              printf("%d\n",a[temp_r][temp_c]);
              temp_r++;
              temp_c--;
          }
      }
      for(j=1;j<row;j++)
      {
          temp_r=j;temp_c=col-1;
          while(temp_r>=0&&temp_r<row&&temp_c>=0&&temp_c<col)
          {
              printf("%d\n",a[temp_r][temp_c]);
              temp_r++;
              temp_c--;
          }
      }
      getchar();
      getchar();
      
}
void main()
{
	int row,col;
	int i=0,j=0,k=0;
	int str[100][100]={0};
	scanf("%d%d",&row,&col);
	for(i=0;i<row;i++)
		for(j=0;j<col;j++)
			scanf("%d",&str[i][j]);
	for(k=0;k<col;k++)
		for(i=0,j=k;j>=0;i++,j--)
		{
			if(str[i][j]==0)
				break;
			else
				printf("%d\n",str[i][j]);
		}
	i=0;
	k=0;
	j=0;
	for(k=1;k<row;k++)
		for(i=k,j=col-1;(i<row)&&(j>=0);i++,j--)
			printf("%d\n",str[i][j]);
}
void main()
{
	int heng,lie,i,j,k,l;
	scanf("%d %d",&heng,&lie);

	int **p;
	p=(int **)malloc(heng*sizeof(int *));
	for(i=0;i<heng;i++)
	{
		*(p+i)=(int *)malloc(lie*sizeof(int));
		for(j=0;j<lie;j++)
	     scanf("%d",*(p+i)+j);
	}
        for(j=0;j<lie;j++)
		{
		  for(k=j,l=0;k>=0;k--,l++)
		  {
			  if(l<heng)
	      printf("%d\n",*(*(p+l)+k));
			  else break;
		  }
		}
         for(j=lie;j<heng+lie-1;j++)
		 {
			 for(k=lie-1,l=j-(lie-1);k>=0;k--,l++)
			 {
				 if(l<heng)
		     printf("%d\n",*(*(p+l)+k));
				 else break;
			 }
		 }
}
int main(){
	int sz[100][100];
	int t,i,j,a,ROW,COL;
	scanf("%d%d",&ROW,&COL);
	for(i=0;i<ROW;i++){
		for(j=0;j<COL;j++){
	      scanf("%d",&sz[i][j]);	
		}
	    
	
	}
	for(t=0;t<ROW+COL-1;t++){
			if(ROW-1>=t){a=t;}
            else{a=ROW-1;}
			i=0;
			while(i<a+1){
				if(i<t-COL+1){
				  i=t-COL+1;
				}
				   j=t-i;
				   printf("%d\n",sz[i][j]);
				   i++;
				}
			
			}
	return 0;
		}
int main()
{
int a[100][100],row,col,i,j,c=1;
int *p=a[0];
cin>>row>>col;
for(i=0;i<row;i++)
for(j=0;j<col;j++)
cin>>a[i][j];
for(i=0;i<row*col;i++)
{
cout<<*p<<endl;
if((p-a[0])%100==0||(p-a[0])/100>=row-1)
{
c++;
if(c<=col)p=a[0]+c-1;
else p=a[0]+(c-col)*100+col-1;
}
else p=p+99;
}
return 0;
}