#include <iostream>
#include <array>
#include <utility>
template <std::size_t ... Is>
constexpr std::array<std::uint16_t, sizeof...(Is)> mersenne_numbers(std::index_sequence<Is...>)
{
return {{ ((1u << Is) - 1u)... }};
}
template <std::uint8_t N>
constexpr std::array<std::uint16_t, N> mersenne_numbers()
{
return mersenne_numbers(std::make_index_sequence<N>{});
}
int main()
{
constexpr auto ns = mersenne_numbers<5>();
for (auto e : ns) {
std::cout << e << " ";
}
std::cout << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDx1dGlsaXR5PgoKdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IC4uLiBJcz4KY29uc3RleHByIHN0ZDo6YXJyYXk8c3RkOjp1aW50MTZfdCwgc2l6ZW9mLi4uKElzKT4gbWVyc2VubmVfbnVtYmVycyhzdGQ6OmluZGV4X3NlcXVlbmNlPElzLi4uPikKewogICAgcmV0dXJuIHt7ICgoMXUgPDwgSXMpIC0gMXUpLi4uIH19Owp9Cgp0ZW1wbGF0ZSA8c3RkOjp1aW50OF90IE4+CmNvbnN0ZXhwciBzdGQ6OmFycmF5PHN0ZDo6dWludDE2X3QsIE4+IG1lcnNlbm5lX251bWJlcnMoKQp7CiAgICByZXR1cm4gbWVyc2VubmVfbnVtYmVycyhzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8Tj57fSk7Cn0KCmludCBtYWluKCkKewoJY29uc3RleHByIGF1dG8gbnMgPSBtZXJzZW5uZV9udW1iZXJzPDU+KCk7CiAgICBmb3IgKGF1dG8gZSA6IG5zKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8IGUgPDwgIiAiOwogICAgfQogICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKfQo=