#include <iostream>
#include <array>
#include <cstddef>
template <std::size_t W, std::size_t H>
class Class {
public:
Class(const int (&_data)[H][W]) {
for (std::size_t h = 0; h != H; ++h)
for (std::size_t w = 0; w != W; ++w)
data[h][w] = _data[h][w];
}
template <typename... Args>
Class(Args&&... args) {
const std::array<int, H * W> temp{std::forward<Args>(args)...};
for (std::size_t h = 0; h != H; ++h)
for (std::size_t w = 0; w != W; ++w)
data[h][w] = temp[h * W + w];
}
void print() const {
for (std::size_t y = 0; y != 2; ++y) {
for (std::size_t x = 0; x != 3; ++x) {
std::cout << data[y][x] << " ";
}
std::cout << std::endl;
}
}
private:
int data[H][W];
};
int main() {
Class<3, 2> c{ 1, 2, 3, 4, 5, 6 };
c.print();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDxjc3RkZGVmPgoKdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IFcsIHN0ZDo6c2l6ZV90IEg+CmNsYXNzIENsYXNzIHsKcHVibGljOgogICAgQ2xhc3MoY29uc3QgaW50ICgmX2RhdGEpW0hdW1ddKSB7CiAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBoID0gMDsgaCAhPSBIOyArK2gpCiAgICAgICAgICAgIGZvciAoc3RkOjpzaXplX3QgdyA9IDA7IHcgIT0gVzsgKyt3KQogICAgICAgICAgICAgICAgZGF0YVtoXVt3XSA9IF9kYXRhW2hdW3ddOwogICAgfQoKICAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBBcmdzPgogICAgQ2xhc3MoQXJncyYmLi4uIGFyZ3MpIHsKICAgICAgICBjb25zdCBzdGQ6OmFycmF5PGludCwgSCAqIFc+IHRlbXB7c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4ufTsKICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGggPSAwOyBoICE9IEg7ICsraCkKICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCB3ID0gMDsgdyAhPSBXOyArK3cpCiAgICAgICAgICAgICAgICBkYXRhW2hdW3ddID0gdGVtcFtoICogVyArIHddOwogICAgfQoKICAgIHZvaWQgcHJpbnQoKSBjb25zdCB7CiAgICAgICAgZm9yIChzdGQ6OnNpemVfdCB5ID0gMDsgeSAhPSAyOyArK3kpIHsKICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCB4ID0gMDsgeCAhPSAzOyArK3gpIHsKICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBkYXRhW3ldW3hdIDw8ICIgIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwogICAgICAgIH0KICAgIH0KcHJpdmF0ZToKICAgIGludCBkYXRhW0hdW1ddOwp9OwoKaW50IG1haW4oKSB7CiAgICBDbGFzczwzLCAyPiBjeyAxLCAyLCAzLCA0LCA1LCA2IH07CiAgICBjLnByaW50KCk7Cn0=