#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;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDxjc3RkaW50PgoKc3RydWN0IE1hdHJpeAp7Cgl0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjb25zdCB1aW50MzJfdCBYLCBjb25zdCB1aW50MzJfdCBZPgoJc3RhdGljIGNvbnN0IHN0ZDo6YXJyYXk8c3RkOjphcnJheTxULCBZPiwgWD4gSURFTlRJVFkoKQoJewoJCS8vY29uc3QgaW50IFggPSA1LCBZID0gNTsKCQlzdGQ6OmFycmF5PHN0ZDo6YXJyYXk8aW50LCBZPiwgWD4gbWF0e307CgkJZm9yIChpbnQgeCA9IDA7IHggPCBYOyArK3gpCgkJCW1hdFt4XVt4XSA9IDE7CgkJCgkJcmV0dXJuIG1hdDsKCX0KfTsKaW50IG1haW4oKQp7CglzdGQ6OmFycmF5PHN0ZDo6YXJyYXk8aW50LCA1PiwgNT4gaWQgPSBNYXRyaXg6OklERU5USVRZPGludCwgNSwgNT4oKTsKCQoKCWZvciAoYXV0byYgYSA6IGlkKQoJewoJCWZvciAoYXV0byBpIDogYSkKCQl7CgkJCXN0ZDo6Y291dCA8PCAiWyIgPDwgaSA8PCAiXSI7CgkJfQoJCXN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7Cgl9Cn0=