#include <iostream>
using namespace std;

void print2DArray_with5Columns(int (*ptr_row)[5])
{
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			std::cout << ptr_row[i][j] << " ";
		}
		std::cout << std::endl;
	}

}

void print2DArray_withPtrToPtr(int **ptr_row)
{
	for (int i = 0; i < 3; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			std::cout << ptr_row[i][j] << " ";
		}
		std::cout << std::endl;
	}

}

int main()
{
	int** ptr_array_5by5;

	ptr_array_5by5 = new int*[3];
	for (int i = 0; i < 3; i++)
	{
		ptr_array_5by5[i] = new int[3];
		for (int j = 0; j < 3; j++)
		{
			ptr_array_5by5[i][j] = i*j;
		}
	}

	print2DArray_with5Columns(reinterpret_cast<int (*)[5]>(ptr_array_5by5));

	std::cout << std::endl;

	print2DArray_withPtrToPtr(ptr_array_5by5);

	return 0;
}