#include <iostream>
#include <cassert>
template<typename T, size_t N=128>
struct A {
size_t count;
T data[N];
};
template <typename T, size_t N=128>
struct B {
int a;
A<T, N> b;
};
template <typename T, typename...U>
B<T, sizeof...(U)+1> make_b(int a, const T& t, const U&...u)
{
constexpr auto size = sizeof...(U) + 1;
return {a, {size, {t, u...}}};
}
int main() {
const auto test = make_b(42, 1, 2, 3, 4, 5);
assert(test.a == 42);
assert(test.b.count == 5);
assert(test.b.data[0] == 1);
assert(test.b.data[4] == 5);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2Fzc2VydD4KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBOPTEyOD4Kc3RydWN0IEEgewogIHNpemVfdCBjb3VudDsKICBUIGRhdGFbTl07Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE49MTI4PgpzdHJ1Y3QgQiB7CiAgaW50IGE7CiAgQTxULCBOPiBiOwp9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uVT4KQjxULCBzaXplb2YuLi4oVSkrMT4gbWFrZV9iKGludCBhLCBjb25zdCBUJiB0LCBjb25zdCBVJi4uLnUpCnsKICBjb25zdGV4cHIgYXV0byBzaXplID0gc2l6ZW9mLi4uKFUpICsgMTsKICByZXR1cm4ge2EsIHtzaXplLCB7dCwgdS4uLn19fTsKfQoKaW50IG1haW4oKSB7CgogIGNvbnN0IGF1dG8gdGVzdCA9IG1ha2VfYig0MiwgMSwgMiwgMywgNCwgNSk7CgogIGFzc2VydCh0ZXN0LmEgPT0gNDIpOwogIGFzc2VydCh0ZXN0LmIuY291bnQgPT0gNSk7CiAgYXNzZXJ0KHRlc3QuYi5kYXRhWzBdID09IDEpOwogIGFzc2VydCh0ZXN0LmIuZGF0YVs0XSA9PSA1KTsKfQo=