#include <iostream>

// Klassentemplate Definition
// Feldgroesse wird als non-type Parameter uebergeben
template <typename T, int ROWS, int COLS=ROWS>
class Matrix
{
    // Feld anlegen
    T matrix[ROWS][COLS];
  public:
    // ctor
    Matrix(T val);
    // Ausgabe des Feldinhalts
    void PrintIt() const;
};

// ctor
template <typename T, int ROWS, int COLS>
Matrix<T, ROWS, COLS>::Matrix(T val)
{
    for (int row=0; row<ROWS; row++)
    {
        for (int col=0; col<COLS; col++)
            matrix[row][col] = val;
    }
}
// Ausgabefunktion
template <typename T, int ROWS, int COLS>
void Matrix<T, ROWS, COLS>::PrintIt() const
{
    for (int row=0; row<ROWS; row++)
    {
        for (int col = 0; col < COLS; col++)
        {
            std::cout << matrix[row][col] << ',';
        }
        std::cout << '\n';
    }
}
