semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main(){
    int row,col;
    int matrix[120][120];
    cin>>row>>col;
    int * p[100];
    for (int i=0; i<row; i++) {
        p[i]=&matrix[i][0];
        for (int j=0; j<col; j++) {
            cin>>matrix[i][j];
            
        }
    }
    if (col>=row) {
        for (int i=0; i<col; i++) {
            for (int j=0; (i-j)<col && (i-j)>=0 && j<row; j++) {
                cout<<* (p[j]+i-j)<<endl;
            }
            
        }
        for (int i=col; i<(col+row-1); i++) {
            for (int j=col-1; i-j<row; j--) {
                cout<<* (p[i-j]+j)<<endl;
            }
        }
    }
    else {
        for (int i=0; i<col; i++) {
            for (int j=0; (i-j)<col && (i-j)>=0 && j<row; j++) {
                cout<<* (p[j]+i-j)<<endl;
            }
            
        }
        for (int i=col; i<(col+row-1); i++) {
            for (int j=col-1; i-j<row && j>=0; j--) {
                cout<<* (p[i-j]+j)<<endl;
            }
        }
        
    }
    
}
/*
  Name: ?????????? 
  Copyright: 
  Author: 
  Date: 09/12/12 22:42
  Description: ????row?col??????array????array[0][0]????????????????????????? 
*/
int main()
{ 
    int row,col;
   int time=0;
   cin>>row>>col;
   int array[110][110]={0},*p=NULL;
   int i,j,k; 
   for( i = 0 ; i < row ; i++) 
       for( p=*(array+i);p <*(array+i)+col;p++)      
          cin>>*p;
      //    for( i = 0 ; i < row ; i++) 
//       for( j = 0 ; j < col ; j++)
//       cout<<array[i][j]<<endl; 
   for(k=0;k<=col+row;k++)
   {
       for(i=0;i<row;i++)
          for(j=0,p=*(array+i);p<*(array+i)+col;j++,p++) 
       { 
         if(i+j==k&&*p!=0) 
          cout<<*p<<endl;
           
       }                                    
   } 
    
    return 0;
}
int main(int argc, char* argv[])
{
	int row,col,i,j;
	int array[100][100];
	scanf("%d%d",&row,&col);
	for(i=0;i<row;i++){
		for(j=0;j<col;j++){
			scanf("%d",&array[i][j]);
		}
	}
	for(i=0;i<row+col;i++){
		for(j=0;j<=i;j++){
			if(j>row-1||i-j>col-1)
				continue;
			if(j<row&&i-j<col)
				printf("%d\n",array[j][i-j]);
		}
	}
	return 0;
}
main()
{
char c;

int sz[100][100];
int row,col,ROW,COL;
scanf("%d %d",&ROW,&COL);
for(row=0;row<ROW;row++){
                         for(col=0;col<COL;col++){
                                                  scanf("%d",&sz[row][col]);
                                                  
                                                  }}
printf("%d\n",sz[0][0]);

int i=0,j,k;

for(j=1;j<COL;j++){
                    
                    for(k=j;k>=0;k--){
                    if(j-k<ROW){
                    printf("%d\n",sz[j-k][k]);}}
                    }
for(j=COL;j<=COL+ROW;j++){
                    
                    for(k=COL-1;k>=0;k--){
                    if(j-k<ROW){
                    printf("%d\n",sz[j-k][k]);}}
                    }



scanf("%s",c);
return 0;
}
void main()
{
	int a[200][200];
	int m,n,i,j,x;
	scanf("%d %d",&m,&n);
	for (i=0;i<m;i++)
      for(j=0;j<n;j++)
        scanf("%d",&a[i][j]);

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



}
int main()
{
	int row,col;
	int a[110][110];
	cin>>row>>col;
	for(int i=1;i<=row;i++)//????
		for(int j=1;j<=col;j++)
			cin>>*(*(a+i)+j);

	for(int k=2;k<=row+col;k++)//????????
		for(int i=1;i<=row;i++)
			for(int j=1;j<=col;j++)
				if(i+j==k)
					cout<<*(*(a+i)+j)<<endl;
	return 0;
}
/*
 * 1.cpp
 *??????????
 *  Created on: 2011-10-30
 *      Author: ??
 */
int main(){
	int col,row,i,k,l,max;//col?? row?? i?k?l????????
	cin>>row>>col;//??????
	if(row>col)//??????????
		max=row;
	else max=col;
	int a[max][max];//????
	memset(a,0,sizeof(a));//???????????
	for(i=0;i<row;i++)
		for(k=0;k<col;k++)
			cin>>a[i][k];//????????????????
	for(i=0;i<max*2-1;i++){
		if(i<max){//??????????????????????????
			for(k=0,l=i-k;k<max&&l>=0;k++,l--)
				if(a[k][l]!=0)//??????????????
					cout<<a[k][l]<<endl;}
		else//????????????
			for(k=max-1,l=i-k;k>0&&l<max;k--,l++)
				if(a[l][k]!=0)
					cout<<a[l][k]<<endl;
	}
	return 0;
}
int main() {
	int row, col;
	int a[100][100] = { 0 };
	cin >> row >> col;
	for (int i = 0; i < row; i++) {
		for (int j = 0; j < col; j++) {
			cin >> *(*(a + i) + j);
		}
	}
	for (int s = 0; s < row + col - 1; s++) {//s???????
		for (int i = 0; i < row; i++) {//i???
			if (s - i >= 0 && s - i < col)
				cout << *(*(a + i) + s - i) << endl;
		}

	}
	return 0;
}
void main()
{
	int (*a)[120],i,j,k,n,m;
	scanf("%d %d",&n,&m);
	a=(int(*)[120])malloc(200*sizeof(int));
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		{
			scanf("%d",*(a+i)+j);
		}
	}
	/*for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
			printf("%d ",*(*(a+i)+j));
	}*/
	for(k=0;k<=n+m-2;k++)                  //k?i?j???????????k?0?n+m-2?????
	{
		for(i=0;(i<=k)&&(i<n);i++)         //?????k???i?0???i??????i<=k?i<n
		{
			j=k-i;
			if(j<m)
			printf("%d\n",*(*(a+i)+j));
		}
	}
}
int main()
{
	int row,col,array[100][100],i,j,t;  //??????????array?????????
	cin>>row>>col;     //??row?col
	for(i=0;i<row;i++)        //??????????
		for(j=0;j<col;j++)
			cin>>array[i][j];
	for(t=0;t<col;t++)        //??????????????????????????????????????????????????row+col-1?????????????????
		for(i=0,j=t;i<=t&&j>=0&&i<row;j--,i++)
	{cout<<array[i][j];
	if(i!=row-1||j!=col-1)   //???????????????????????
		cout<<endl;
	}
	for(t=1;t<=row-1;t++)                         //????????????
	for(i=t,j=col-1;j>=0&&i<=row-1;j--,i++)
	{cout<<array[i][j];
		if(i!=row-1||j!=col-1)   //???????????????????????
			cout<<endl;
		}
return 0;
}
void out(int sum,int row,int col,int (*a)[200])//????????????????
{
	int i;//i???,sum-i???????
	if(sum<=col-1)//??
	{
		for(i=0;sum-i>=0 && i<=row-1;i++)
			cout << *(*(a+i)+sum-i) << endl;
	}else{
		for(i=sum-(col-1);sum-i>=0 && i<=row-1;i++)
			cout << *(*(a+i)+sum-i) << endl;
	}
}
int main(){
int c,r;
cin >> c >> r;
int a[200][200];
for(int i=0;i<c;i++)
	for(int j=0;j<r;j++)
		cin >> *(*(a+i)+j);
for(int sum=0;sum<=c+r-2;sum++)
	out(sum,c,r,a);
return 0;
}
int main(){
	int a[105][105]={0},row,col;
	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<row+col-1;i++){
		for(int j=0;j<row;j++){
			for(int k=0;k<col;k++){
				if(j+k==i)cout<<*(*(a+j)+k)<<endl;
				}
			}
		}//?? 
		
		return 0;
	}
int main()
{
	int row,col,i,j,array[100][100]={0},point=0;
	cin>>row>>col;
	for(i=0;i<row;i++)
		for(j=0;j<col;j++)
			cin>>array[i][j];
	for(j=0;j<col;j++)
	{
		point=j;i=0;
		do
		{
			cout<<array[i++][point--]<<endl;
		}
		while(point>=0&&i<row);
	}
	for(i=1;i<row;i++)
	{
		point=i;j=col-1;
		do
		{
			cout<<array[point++][j--]<<endl;
		}
		while(point<row&&j>=0);
	}
	return 0;
}
int main()
{
	int sz[100][100];
	int row,col;
	scanf("%d%d",&row,&col);
	for(int i=0;i<row;i++)
	{
		for(int j=0;j<col;j++)
		{
			scanf("%d",&sz[i][j]);
		}
	}
	for(int k=0;k<=row+col-2;k++)
	{
		if((k<=col-1)&&(k<=row-1))
		{
			for(int l=0;l<=k;l++)
		{
			printf("%d\n",sz[l][k-l]);
		}
	}
		else if((k<=col-1)&&(k>row-1))
		{
			for(int m=0;m<=row-1;m++)
			{
				printf("%d\n",sz[m][k-m]);
			}
		}
	else if((k>col-1)&&(k<=row-1))
	{
		for(int t=k-col+1;t<=k;t++)
		{
			printf("%d\n",sz[t][k-t]);
		}
	}
	else if((k>col-1)&&(k>row-1))
	{
		for(int p=k-col+1;p<=row-1;p++)
		{
			printf("%d\n",sz[p][k-p]);
		}
	}
	}
	return 0;
}
int main()
{
	int row, col;
	cin >> row >> col;
	int matrix[100][100];
	int i, j, k, x, a, b;
	for (i = 1; i <= row; i++)
		for (j = 1; j <= col; j++)
		{
			cin >> matrix[i][j];
		}
	for (k = 2; k <= row + col; k++)
	{
		a = k > col + 1? k-col:1;
		b = k > row + 1? row+1:k;
		for (x = a; x < b; x++)
		{
			cout << matrix[x][k-x] << endl;
		}
	}
	return 0;
}
int main()
{
	int sz[100][100];
	int row,col;
	scanf("%d %d",&row,&col);
	int r,c;
	for(r=0;r<row;r++){
		for(c=0;c<col;c++){
			scanf("%d",&sz[r][c]);
		}
	}
	int k;
	int first=1;
	int min=row-1;
	if(col<min+1){
		min=col-1;
	}

	for(k=0;k<=min;k++){
		for(r=0;r<=k;r++){
	     	if(first==1){
		    	printf("%d",sz[r][k-r]);
				first=0;
			}else{
				printf("\n%d",sz[r][k-r]);
			}
		}
	}


	if(row>col){
		for(k=1;k<=row-col;k++){
			for(r=k,c=col-1;c>=0&&r<row;c--,r++){
				printf("\n%d",sz[r][c]);
			}
		}
	}
	
	if(row<col){
		for(k=1;k<=col-row;k++){
			for(c=row-1+k,r=0;r<=row-1;c--,r++){
				printf("\n%d",sz[r][c]);
			}
		}
	}

	for(k=min+1;k>=1;k--){
		for(r=row-k+1,c=col-1;r<row;r++,c--){
			printf("\n%d",sz[r][c]);
		}
	}
			

				



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

	return 0;
}
int main()
{
	int row, col;
	int i=0,j=0;
	int ar[101][101];
	scanf("%d %d",&row,&col);

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

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

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

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

	for(i=row;i<=row+col-2;i++)
		for(j=col-1;j>=i-row+1;j--)
			printf("%d\n",ar[i-j][j]);
}

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

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

	for(i=col;i<=row+col-2;i++)
		for(j=col-1;j>=i-row+1;j--)
			printf("%d\n",ar[i-j][j]);
}

	return 0;
}
int h,l,(*p)[100];
void shuchu(int a)
{int r,c,i=0;
 r=0;c=a;
 for(;r<h;i++)
 {if(c>=0&&c<l)
	printf("%d\n",*(*(p+r)+c));
  r+=1;c-=1;
 }

}

int main()
{int i,j;
 scanf("%d %d",&h,&l);
p=(int (*)[100])malloc(h*100*sizeof(int));
 for(i=0;i<h;i++)
  for(j=0;j<l;j++)
	  scanf("%d",*(p+i)+j);
  for(i=0;i<h+l-1;i++)
	  shuchu(i);
}
int main()
{
	int a[100][100];
	int m,n;
	cin>>m>>n;
	for(int i=0;i!=m;i++)
	{
		for(int j=0;j!=n;j++)
			cin>>a[i][j];
	}
	for(int i=0;i!=n;i++)
	{
		for(int j=0;;j++)
		{
			if(j==m||i-j<0)
				break;
			cout<<a[j][i-j]<<endl;
		}
	}
	for(int i=1;i!=m;i++)
	{
		for(int j=0;;j++)
		{
			if(i+j==m||n-1-j<0)
				break;
            cout<<a[i+j][n-1-j]<<endl;
		}
	}
	return 0;
}
int main()
{
 int row,col,i,j,k,h;
 cin>>row>>col;
 cout<<endl;
 int a[row][col];
 for(i=0;i<=row-1;i++)
 {for(j=0;j<=col-1;j++)
  {cin>>a[i][j];}
 }
 if(row!=1&&col!=1)
 {for(j=0;j<=col-1;j++)
  {k=0;
   h=j;
   while(k<=row-1&&h>=0)
   {cout<<a[k][h]<<endl;
    k=k+1;
    h=h-1;
   }
  }
  for(i=1;i<=row-1;i++)
  {k=col-1;
   h=i;
   while(h<=row-1&&k>=0)
   {cout<<a[h][k]<<endl;
    h=h+1;
    k=k-1;
  }
 }
}
 if(row==1&&col!=1)
 {for(i=0;i<=col-1;i++)
  {cout<<a[0][i]<<endl;}
 }
 if(col==1&&row!=1)
 {for(i=0;i<=row-1;i++)
  {cout<<a[i][0]<<endl;}
 }
 if(row==1&&col==1)
 {cout<<a[0][0]<<endl;}
 return 0;
}
int main(){
	int array[100][100],ROW,COL,i=0,k=0,j=0;
		scanf("%d%d",&ROW,&COL);
		for(i=0;i<ROW;i++){
			for(j=0;j<COL;j++){
				scanf("%d",&array[i][j]);
			}
		}
	for (k=0; k<COL; k++) {
		for (i=0, j=k; i<ROW&& j>=0; i++, j--){
            printf("%d\n",array[i][j]);
		}
	}
for (k=1; k<ROW; k++) {
	for ( i=k,  j=COL-1; i<ROW && j>=0; i++, j--){
printf("%d\n",array[i][j]);
}
}
	return 0;
}
//??(6-4) ?????????? ??? 20121208

int row,col,Mat[111][111];

void Out(int i,int j)   //????????
{
    cout<<*(*(Mat+i)+j)<<endl;
    if(i==row-1||j==0) return;  //?????
    else Out(i+1,j-1);
}

int main()
{
    cin>>row>>col;

    //??
    for(int i=0;i<row;i++)
    for(int j=0;j<col;j++)
        cin>>*(*(Mat+i)+j);

    for(int i=0;i<col;i++)
        Out(0,i);

    for(int i=1;i<row;i++)
        Out(i,col-1);
}
int main()
{
	int row, col, i, j, k, a[110][110]={0};
	cin >> row >> col;
	for (i=0; i<row; i++)
		for (j=0; j<col; j++)
			cin >> *(*(a+i)+j);						//???????
	for (k=0; k<row+col-1; k++)
	{
		i=0;
		j=k;
		while (j>=0)
		{
			if ((i<row)&&(j<col))
				cout << *(*(a+i)+j) << endl;		//????????
			i++;
			j--;
		}
	}
	return 0;										//main???????0
}
main()
{
      int n,lie,z;
      int i,j; 
      scanf("%d %d",&n,&lie);
      int *p[n];
      for(i=0;i<n;i++)
      {
         p[i]=(int *)malloc(lie*sizeof(int));
         for(j=0;j<lie;j++)
         {
                        scanf("%d",p[i]+j);
         }
      } 
      for(z=0;z<=n+lie-2;z++)
      {
                             for(i=0;i<n;i++)
                             {
                                             for(j=0;j<lie;j++)
                                             {
                                                               if(i+j==z)
                                                               printf("%d\n",*(p[i]+j));
                                             }
                             }
      }
      }
//??????????


int main()
{
	int a[100][100];
	int row,col;
	cin>>row>>col;
	for(int i=0;i<row;i++)              //????
		for(int j=0;j<col;j++)
			cin>>a[i][j];
	for(int p=0;p<=row+col-2;p++)       //????????? ??
	{
		for(int i=0;i<=p;i++)
		{
			int j=p-i;
			if(i>row-1||j>col-1||j<0)
				continue;
			cout<<a[i][j]<<endl;
		}
	}
	return 0;
}
int main(){
	int x,y,i=0,j=0,a[100][100];
	cin>>x>>y;
	for(i=0;i<x;i++)
		for(j=0;j<y;j++)
			cin>>a[i][j];
	for(i=0;i<y;i++)
		for(j=0;i-j>=0&&j<x;j++)
			cout<<a[j][i-j]<<endl;
	for(i=1;i<x;i++)
		for(j=0;i+j<x&&y-j-1>=0;j++)
			cout<<a[i+j][y-1-j]<<endl;
	return 0;
}
int main()
{
	int row,col;
	cin>>row>>col;
	int m=1,n=1;
	int h,g;
	int a[100][100];
	for(int i=1;i<=row;i++)
		for(int j=1;j<=col;j++)
			cin>>a[i][j];
	while(m<=row)
	{
		h=m;g=n;
		while(h<=row&&g>=1)
		{
			cout<<a[h][g]<<endl;
			h++;g--;
		}
		if(n<col) n++;
		else m++;
	}
	return 0;
}
int main() 
{
	int row,col,a[100][100];
	cin>>row>>col;
	int num = 0;
	for(int i = 1;i<=row;i++)
	{
		for(int j = 1;j<=col;j++)
		{
			cin>>a[i-1][j-1];
		}
	}
	for(int k = 0;k<= row+col-2;k++)
	{
		for(int l =0;l<=row-1;l++)
		{
			if(k-l<=col-1&&k>=l)
			{
				cout<< a[l][k-l]<<endl;
			}
		}
	}
	return 0;
}
int main(){
	int h,k,e,s,i,l;
	scanf("%d%d",&h,&l);
	int juzhen[hang][lie];
	for(i=0;i<h;i++){
		for(k=0;k<l;k++){
			scanf("%d",&(juzhen[i][k]));
		}
	}

	for(s=0;s<l;s++){
		k=s;
		i=0;
		for(e=0;e<=s;e++){
			printf("%d\n",juzhen[i][k]);
			i++;
			k--;
			if(i==h){
				break;
			}
		}	
	}
	for(e=1;e<h;e++){
		i=e;
		k=l-1;
		for(s=0;s<(h-e);s++){
			printf("%d\n",juzhen[i][k]);
			i++;
			k--;
			if(k<0){
				break;
			}		
		}
	}
return 0;
}
int main()
{int a[103][103];

	int row,col;
	int i,j;
	cin>>row>>col;
	for(int i=0;i<row;i++)
		for(int j=0;j<col;j++)cin>>*(a[i]+j);
for(i=0;i<row+col-1;i++)
	for(j=0;j<=i;j++)if(j<row&&i-j<col)cout<<*(a[j]+i-j)<<endl;

return 0;
}
int main(int argc, char* argv[])
{
	int col,row,sz[99][99],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&&j<row;j++){
			printf("%d\n",sz[j][i-j]);
		}
	}
	for(i=1;i<row;i++){
		for(j=0;j+i<row&&j<col;j++){
			printf("%d\n",sz[i+j][col-j-1]);
		}
	}
	return 0;
}
int main()
{
    long p,q,r,l,i,x,j;
    long a[202][202]={0},b[202]={0};
    scanf("%ld%ld",&r,&l);
    for(i=1;i<=r;i++)
       for(j=1;j<=l;j++)
          {scanf("%ld",&x);
           a[i+j][b[i+j]]=x;b[i+j]++;}
    i--;j--;
    for(p=2;p<=i+j;p++)
       for(q=0;q<b[p];q++)
          printf("%ld\n",a[p][q]);
    return 0;
}
int main(){
    int sz[300][300];
	int r,c,m,i,j,n,k,a;
	scanf("%d %d",&r,&c);
	for(i=0;i<r;i++)
		for(j=0;j<c;j++)
			scanf("%d",&sz[i][j]);

	for(i=0;i<=r+c-2;i++){
		for(j=0;;j++){
			k=i-j;
			if(k<0)
				break;
			if(j<r && k<c)
				printf("%d\n",sz[j][k]);
		}
	}
	return 0;
}
int main()
{
	int a[100][100], r, c, i, j;
	cin >> r >> c;
	for (i = 0; i <= r - 1; i++)
	{
		for (j = 0; j <= c - 1; j++)
		{
			cin >> a[i][j];
		}

	}
	for (j = 0; j <= c - 1; j++)
	{
		for (i = 0; (i <= j) && (i <= r - 1); i++)
		{
			cout << a[i][j - i] << endl;
		}
	}
	for (i = 1; i <= r - 1; i++)
	{
		for (j = 0; (j <= r - i - 1) && (j + 1 <= c); j++)
		{
			cout << a[i + j][c - 1 - j] << endl;
		}
	}
	return 0;
}
int main()
{
	int sz[100][100];
	int row, col, i, j;
	int startrow = 0 , startcol = 0;

	scanf("%d %d",&row, &col);
	for(i = 0; i < row; i++)
	{
		for(j = 0; j < col; j++)
		{
			scanf("%d", &sz[i][j]);
		}
	}
	while((startcol + startrow) != (row + col - 2))
	{
		if(startcol < col - 1)
		{
			for(i = startrow; (i < row) && (i <= startrow + startcol); i++)
			{
				printf("%d\n",sz[i][startcol + startrow - i]);
			}
			startcol++;
		}
		else
		{
			for(i = startrow; (i < row) && (i <= startrow + startcol); i++)
			{
				printf("%d\n",sz[i][startcol + startrow - i]);
			}
			startrow++;
		}
	}
	printf("%d",sz[row - 1][col - 1]);
	return 0;
}
int main()
{
  int row,col;
  scanf("%d %d",&row,&col);
  int array[row][col];
  int i,j,k,l;
  for(i=0;i<row;i++)
  for(j=0;j<col;j++)
  scanf("%d",&array[i][j]);
  for(k=0;k<col+row-1;k++)
  for(l=0;k-l>-1;l++)
  if(k-l<col&&l<row)
  printf("%d\n",array[l][k-l]);
  return 0;
}
int main()
{
	int row, col, array[100][100], i, j, temp = 0;
	cin >> row >> col;
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			cin >> array[i][j];
		}
	}
	while (temp < col)
	{
		j = temp;
		i = 0;
		while (i < row && j >= 0)
		{
			cout << array[i++][j--] << endl;
		}
		temp++;
	}
	if (row > 1)
	{
		temp = 1;
		while (temp < row)
		{
			j = col - 1;
			i = temp;
			while (i < row && j >= 0)
			{
				cout << array[i++][j--] << endl;
			}
			temp++;
		}
	}
	return 0;
}
void main()
{
    int num=0,i,j,row,col,a[105][105],h;
    scanf("%d %d",&row,&col);
    for(i=0;i<row;i++)
    for(j=0;j<col;j++)
    	scanf("%d",&a[i][j]);
    	for(h=0;h<col+row-1;h++)
    	{
    		if(h<col)
    	{
    		for(i=0;i<row&&h-i>=0&&h-i<col;i++)
    		{
    			j=h-i;
    			printf("%d\n",a[i][j]);
    		}
    	}
    	else 
    	for(j=col-1;j>=0&&h-j>=0&&h-j<row;j--)
    	{
    		i=h-j;
    		printf("%d\n",a[i][j]);
    	}
    	}
    	
}
void main()
{
	int row,col,n=0,i,j,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]);
	}
	i=0;j=0;
	while(n<row+col-1)
	{
		printf("%d\n",a[i][j]);
		if(j==0||(i==row-1&&j!=0)) {n++;j=n;i=0;}
		else {i++;j--;}
		while(j>col-1) {j--;i++;}
		if(i==row-1&&j==col-1) {printf("%d\n",a[i][j]);break;}
	}
}
void bianli()
{
    int a[maxrow][maxcol],row,col,i,j,k,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;n++)
	{
		i=0;j=n;
	    for(k=n;k>=0;k--)
		{
			printf("%d\n",a[i][j]);
			i++;j--;
			if(i>=row||j>=col)
				break;
		}
	}
	for(n=1;n<row;n++)
	{
		i=n;j=col-1;
		for(k=n;k<=row-1;k++)
		{
			printf("%d\n",a[i][j]);
			i++;j--;
            if(i>=row||j<0)
				break;
		}
	}
}
void main()
{bianli();}
/*
 * bianli.cpp
 *
 *  Created on: 2012-12-14
 *      Author: dell
 */
int main() {
	int i,j,row,col,p[100][100];
	cin>>row>>col;//???p????
	for(i=0;i<row;i++){
		for(j=0;j<col;j++){
			cin>>p[i][j];
		}
	}//??p
	for(i=0;i<row+col-1;i++){
		for(j=0;j<i+1&&j<row;j++){
			if(i-j>=col)continue;
			cout<<*(*(p+j)+i-j)<<endl;
		}//??????????????????
	}
	return 0;
}//?????
/********************************************
 *@file                                     *
 *@author ??                              *
 *@date   2014-1-15                         *
 *@description                              *
 *?????????????????        *
 ********************************************
 */
int main()
{
	int col, row, array[110][110]= {0},i, j, p = 0, q = 0, sum, count = 0;
	cin >> row >> col;
	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			cin >> array[i][j];
		}
	}
	sum = row * col;
	while (count != sum)
	{
		if (q != 0 && p != row - 1)
		{
			cout << array[p][q] << endl;
			count++;
			p++;
			q--;
			continue;
		}
		if (q == 0 && p != row - 1)
		{
			cout << array[p][q] << endl;
			count++;
			if (q != col - 2)
			{
				q = p + 1;
				p = 0;
				if (q > col - 1)
				{
				p = q - col + 1;
				q = col - 1;
				}
			}
			else if (q == col - 2)
			{
				p = p - col + 2;
				q = col - 1;
			}
			continue;
		}
		if (p == row - 1)
		{
			cout << array[p][q] << endl;
			count++;
			q = p + q + 1;
			p = 0;
			if (q > col - 1)
			{
				p = q - col + 1;
				q = col - 1;
			}
		}
	}
	return 0;
}
void move1(int *p[],int m,int n)
{
	int i,k;
		for(i=0;i<m-1;i++)
		{
			for(k=0;k<=i;k++)
			{
				printf("%d\n",*(p[0+k]+i-k));
			}
		}
		for(i=m-1;i<n-1;i++)
		{
			for(k=0;k<m;k++)printf("%d\n",*(p[0+k]+i-k));
		}
		for(i=0;i<m;i++)
		{
			for(k=0;k<m-i;k++)
			{
				printf("%d\n",*(p[i+k]+n-1-k));
			}
		}
}
void move2(int *p[],int m,int n)
{
	int i,k;
		for(i=0;i<n-1;i++)
		{
			for(k=0;k<=i;k++)
			{
				printf("%d\n",*(p[0+k]+i-k));
			}
		}
		for(i=0;i<m-n;i++)
		{
			for(k=0;k<n;k++)printf("%d\n",*(p[i+k]+n-1-k));
		}
		for(i=m-n;i<m;i++)
		{
			for(k=0;k<m-i;k++)
			{
				printf("%d\n",*(p[i+k]+n-1-k));
			}
		}
}
void main()
{
	int m,n,i,j,*p[100]={0},**head;
	scanf("%d%d",&m,&n);
	for(i=0;i<m;i++)
	{	p[i]=(int *)malloc(n*sizeof(int));}
	head=p;
	for(i=0;i<m;i++)
	{for(j=0;j<n;j++)
	scanf("%d",*(p+i)+j);}	
	if(m<=n)move1(p,m,n);
	else move2(p,m,n);
}
int main()
{
    int a[102][102],row,col,t,k,i,j;
    cin>>row>>col;
    t=row+col-2;
    for(i=0;i<row;i++)
    	for(j=0;j<col;j++)
    		cin>>a[i][j];
    for(k=0;k<=t;k++)
    {
        if(k+1<=col) i=0;
        else i=k-col+1;
    	j=k-i;
    	while(j>=0&&i<row)
    	{
    		cout<<a[i][j]<<endl;
    		i++;j--;
    	}
    }
	return 0;
}
/*
 * ??(6-4) ??????????
 *
 *  Created on: 2012-12-12
 *      Author: zhuyongfu
 */



int row,col;//???????
int array[101][101];//???????
int (*p)[101] = array;//???????
int f(int m,int n){
	int i;
	if(m == row - 1&&n == col - 1)//????
	{
		cout << *(*(p + m) + n);
		return 0;
	}
	for(i = 0;m + i <= row - 1&&n - i >= 0;i++)//????
		cout << *(*(p + m + i) + n - i) << endl;
	if(n < col - 1)//????
		return f(0,n + 1);
	if(n >= col - 1)//????
		return f(m + 1,col - 1);
}


int main(){
	int i,j;//??????
	cin >> row >> col;
	for(i = 0;i < row;i++)
		for(j = 0;j < col;j++)//????
			cin >> array[i][j];
	f(0,0);//
	return 0;
}
int main()
{
	int i,j,k,m,n;
	int a[100][100];
	cin>>n>>m;
	for (i=1;i<=n;i++)
	for (j=1;j<=m;j++)
		cin>>a[i][j];
    for (i=1;i<=m+n-1;i++)
		for (j=1;j<=n;j++)
	 {
		 if (i+1-j>0&&i+1-j<=m)//???????? 
		 cout<<*(*(a+j)+i+1-j)<<endl;
	 }
	return 0;
}
int main(){
	int m,n;
		cin>>m>>n;
		int a[m][n];
		for(int c=0;c<m;c++)
			for(int d=0;d<n;d++)cin>>a[c][d];
		int *p[m];
		for(int j=0;j<m;j++)p[j]=a[j];
		for(int k=0;k<=m+n-2;k++)
			for(int c=0;c<m;c++)
						for(int d=0;d<n;d++){
							if(c+d==k)cout<<*(p[c]+d)<<endl;
						}
	return 0;
}
//
//  main.cpp
//  Homework_12_10
//  ??????????
//  Created by airjcy on 12/10/12.
//  Copyright (c) 2012 airjcy. All rights reserved.
//


int main(int argc, const char * argv[])
{
    int row, col;
    cin >> row >> col;
    int a[row][col];
    int i,j;
    for (i = 0; i < row; i ++) {
        for (j = 0; j < col; j ++) {
            cin >> a[i][j];
        }
    }
    for(j = 0; j < col ; j++)
    {
        int t = 0;
        int k = j;
        while (t < row && k >= 0) {
            cout << a[t][k] << endl;
            t++;
            k--;
        }
    }
    for(i = 1; i < row; i++)
    {
        int t = i;
        int k = col - 1;
        while (t < row && k >= 0) {
            cout << a[t][k] << endl;
            t ++;
            k --;
        }
    }
    
    return 0;
}
int main()
{
    int i,row,col,rst=0,cst=0;
    int R,C;
    int a[100][100];
    scanf("%d%d",&R,&C);
    for(row=0;row<R;row++)
    {
       for(col=0;col<C;col++)
       {
          scanf("%d",&a[row][col]);
       }
    }
    
    for(i=0;i<R+C-1;i++)
    {
       row=rst;
       col=cst;
       while(row!=R&&col!=-1)
       {
           printf("%d\n",a[row][col]);
           row++;
           col--;
       }
       if(cst!=C-1) cst++;
       else rst++;
    }
    
  return 0;
}