#include <cstdint>
#include <cstddef>
typedef uintmax_t FullInt;
template <size_t N>
struct UInt;
template <>
struct UInt<1> { typedef uint8_t type; };
template <>
struct UInt<2> { typedef uint16_t type; };
template <>
struct UInt<4> { typedef uint32_t type; };
typedef UInt<sizeof(FullInt)/2>::type HalfInt;
#include <typeinfo>
#include <iostream>
int main()
{
std::cerr << sizeof(FullInt) << " " << sizeof(HalfInt) << std::endl;
}
I2luY2x1ZGUgPGNzdGRpbnQ+CiNpbmNsdWRlIDxjc3RkZGVmPgoKdHlwZWRlZiB1aW50bWF4X3QgRnVsbEludDsKCnRlbXBsYXRlIDxzaXplX3QgTj4Kc3RydWN0IFVJbnQ7Cgp0ZW1wbGF0ZSA8PgpzdHJ1Y3QgVUludDwxPiB7IHR5cGVkZWYgdWludDhfdCB0eXBlOyB9OwoKdGVtcGxhdGUgPD4Kc3RydWN0IFVJbnQ8Mj4geyB0eXBlZGVmIHVpbnQxNl90IHR5cGU7IH07Cgp0ZW1wbGF0ZSA8PgpzdHJ1Y3QgVUludDw0PiB7IHR5cGVkZWYgdWludDMyX3QgdHlwZTsgfTsKCnR5cGVkZWYgVUludDxzaXplb2YoRnVsbEludCkvMj46OnR5cGUgSGFsZkludDsKCiNpbmNsdWRlIDx0eXBlaW5mbz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oKQp7CiAgc3RkOjpjZXJyIDw8IHNpemVvZihGdWxsSW50KSA8PCAiICIgPDwgc2l6ZW9mKEhhbGZJbnQpIDw8IHN0ZDo6ZW5kbDsKfQ==