#include <iostream>
#include <array>
#include <cstdint>

struct Matrix
{
	template<typename T, const uint32_t X, const uint32_t Y>
	static const std::array<std::array<T, Y>, X> IDENTITY()
	{
		//const int X = 5, Y = 5;
		std::array<std::array<int, Y>, X> mat{};
		for (int x = 0; x < X; ++x)
			mat[x][x] = 1;
		
		return mat;
	}
};
int main()
{
	std::array<std::array<int, 5>, 5> id = Matrix::IDENTITY<int, 5, 5>();
	

	for (auto& a : id)
	{
		for (auto i : a)
		{
			std::cout << "[" << i << "]";
		}
		std::cout << std::endl;
	}
}