#include <iostream>
#include <iomanip>
using namespace std;

// 1. Функція для створення (виділення пам'яті) динамічного 2D-масиву
int**  createMatrix(int rows, int cols)  {
    // Размежовуємо потрійний вказівник, щоб дістатися до int**
    int **matrix = new int*[rows];
    
    for (int i = 0; i < rows; ++i) {
        matrix[i] = new int[cols];
    }
    return matrix;
}
// 2. Функція для читання (введення) елементів матриці з клавіатури
void readMatrix(int** matrix, int rows, int cols) {
   for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < cols; ++j) {
            cin >> matrix[i][j];
        }
    }
}
// 3. Функція для виведення матриці на екран
void printMatrix(int**  matrix, int rows, int cols) {
    for (int i = 0; i < rows; ++i) {
        for (int j = 0; j < cols; ++j) {
            cout << setw(6) << matrix[i][j] << " "; // setw(6) рівномірно вирівнює стовпчики
        }
        cout << endl; // Перехід на новий рядок після кожного рядка матриці
    }
}
int main() {
    int n, m;
    cin>>n>>m;
  
    // int** myMatrix =  createMatrix(rows, cols);
    int **myMatrix = new int*[n];
    
    for (int i = 0; i < n; ++i) {
        myMatrix[i] = new int[m];
    }
	readMatrix(myMatrix,n, m );
    // Використання...
    myMatrix[0][0] = 42;
    cout << "myMatrix[0][0] = " << myMatrix[0][0] << endl;
printMatrix(myMatrix,n, m);
    // Звільнення пам'яті
    for (int i = 0; i < n; ++i) {
        delete[] myMatrix[i];
    }
    delete[] myMatrix;

    return 0;
}
