#include <stdio.h>
#include <iostream.h>
#include<stdlib.h>

typedef struct Passnode
{
	int key;
	struct Passnode* next;
}Passnode,Pass;


typedef struct{
	Passnode* headPass;
}Passlink;


typedef struct Array
{
		Passnode* headline;
		struct Array* next;
}Array;

/**************************/
void SetNumber(Array* p, int x, int y, int num)
{
	int i,j; 
	Pass* ptr;

	for( i=0; i<x; i++)
			p=p->next;

	ptr=p->headline;

	for ( j=0; j<y; j++)
			ptr=ptr->next;

	ptr->key = num;
}
/**************************/
int GetNumber(Array* p, int x, int y)
{
	int i; 
	Passnode* ptr;

	for( i=0; i< y; i++)
		if( y!= NULL)
			p=p->next;

	ptr=p->headline;

	for ( i=0; i<x; i++)
			ptr=ptr->next;

	return	ptr->key;
}


/*******************************/
void  drow(Array*A,int n,int z)
{

	Passnode *x;
	Array *y, *tempArray;

	y=A;
  for ( int i =0; i<n; i++)
  {
		y->headline=NULL;

		for ( int j=0; j< z; j++)
		{
		   x=(Passnode*)malloc(sizeof(Passnode));
		   x->next=y->headline;
			x->key = 0;
	    	y->headline=x;
		
		}
        tempArray=(Array*)malloc(sizeof(Array));
		tempArray->next=y->next;
		y->next=tempArray;
		y=y->next;

	}
	}


main()
{
	
        
		Array y;
		int x,z,num,c,i;

		printf("Enter dimition row and coulon:\n");
		scanf("%d%d",&x,&z);
		y.next=NULL;
		drow(&y,x,z);
	
     
     for (  c=0; c<x;c++)
	{
		 printf("Enter the entery of the row number %d :\n",c);
		 for (int i = 0 ; i<z;i++){
			scanf("%d",&num);
			SetNumber(&y, i ,c,num) ;
		 }
	}

	for ( c=0; c<x;c++)
	{
        printf("\n");
		for ( i = 0 ; i<z;i++)
			printf("%d  ",GetNumber(&y, c ,i)  );
	
	}
	
	

}