#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
	int ( *array )[10] = malloc( sizeof(int ) * 20 * 10 );
	for( size_t i = 0 ; i < 20 ; i++ )
	    for( size_t j = 0 ; j < 10 ; j++ )
	          array[i][j] = i * 100 + j;
	          
	          
	
	for( size_t i = 0 ; i < 20 ; i++ )
	{
		for( size_t j = 0 ; j < 10 ; j++ )	
		{
			printf( "%5d " , array[i][j] );
		}
		printf( "\n" );
	}	

	array = realloc( array , sizeof( int ) * 15 * 10 );
	
	printf( "\n\n" );
	for( size_t i = 0 ; i < 15 ; i++ )
	{
		for( size_t j = 0 ; j < 10 ; j++ )	
		{
			printf( "%5d " , array[i][j] );
		}
		printf( "\n" );
	}	

	int (*newarray)[3] = ( int(*)[3] )array;
	for( size_t j = 1 ; j < 15 ; j++ )
	{
	    memmove( newarray[j] , array[j] , sizeof( int ) * 3 );
	}
	
	newarray = realloc( array , sizeof( int ) * 15 * 3 );
	
	
	printf( "\n\n" );
	for( size_t i = 0 ; i < 15 ; i++ )
	{
		for( size_t j = 0 ; j < 3 ; j++ )	
		{
			printf( "%5d " , newarray[i][j] );
		}
		printf( "\n" );
	}
	return 0;
}
