#include <initializer_list>
#include <algorithm>
#include <iostream>
template <typename T, std::size_t N>
struct Array
{
T body[N];
Array(std::initializer_list<T> const& list)
{
std::copy(list.begin(), list.end(), body);
}
operator T* () { return body; }
constexpr std::size_t size() const { return N; }
T operator [](std::size_t n) const
{
return body[n];
}
T* begin() const { return body; }
T* end() const { return body + N; }
T& at(std::size_t offset) const
{
return body[offset];
}
};
int main()
{
Array<int, 4> x = {4, 2, 1, 4};
std::cout << x.size();
}
I2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCnRlbXBsYXRlIDx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgpzdHJ1Y3QgQXJyYXkKewogICAgVCBib2R5W05dOwogICAgCiAgICBBcnJheShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VD4gY29uc3QmIGxpc3QpCiAgICB7CiAgICAgICAgc3RkOjpjb3B5KGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSwgYm9keSk7CiAgICB9CgogICAgb3BlcmF0b3IgVCogKCkgeyByZXR1cm4gYm9keTsgfQogICAgY29uc3RleHByIHN0ZDo6c2l6ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBOOyB9CiAgICAKICAgIFQgb3BlcmF0b3IgW10oc3RkOjpzaXplX3QgbikgY29uc3QKICAgIHsKICAgICAgICByZXR1cm4gYm9keVtuXTsKICAgIH0KICAgIAogICAgVCogYmVnaW4oKSBjb25zdCB7IHJldHVybiBib2R5OyB9CgogICAgVCogZW5kKCkgICBjb25zdCB7IHJldHVybiBib2R5ICsgTjsgfQogICAgCiAgICBUJiBhdChzdGQ6OnNpemVfdCBvZmZzZXQpIGNvbnN0CiAgICB7CiAgICAgICAgcmV0dXJuIGJvZHlbb2Zmc2V0XTsKICAgIH0KfTsKCmludCBtYWluKCkKewogICAgQXJyYXk8aW50LCA0PiB4ID0gezQsIDIsIDEsIDR9OwoKICAgIHN0ZDo6Y291dCA8PCB4LnNpemUoKTsKfQ==