template < typename T>
struct make_unsigned
{
typedef T type;
} ;
template <>
struct make_unsigned< char >
{
typedef unsigned char type;
} ;
template <>
struct make_unsigned< short >
{
typedef unsigned short type;
} ;
template <>
struct make_unsigned< int >
{
typedef unsigned int type;
} ;
template <>
struct make_unsigned< long >
{
typedef unsigned long type;
} ;
template <>
struct make_unsigned< long long >
{
typedef unsigned long long type;
} ;
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CnN0cnVjdCBtYWtlX3Vuc2lnbmVkCnsKCXR5cGVkZWYgVCB0eXBlOwp9OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgbWFrZV91bnNpZ25lZDxjaGFyPgp7Cgl0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHlwZTsKfTsKCnRlbXBsYXRlPD4Kc3RydWN0IG1ha2VfdW5zaWduZWQ8c2hvcnQ+CnsKCXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdHlwZTsKfTsKCnRlbXBsYXRlPD4Kc3RydWN0IG1ha2VfdW5zaWduZWQ8aW50Pgp7Cgl0eXBlZGVmIHVuc2lnbmVkIGludCB0eXBlOwp9OwoKdGVtcGxhdGU8PgpzdHJ1Y3QgbWFrZV91bnNpZ25lZDxsb25nPgp7Cgl0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdHlwZTsKfTsKCnRlbXBsYXRlPD4Kc3RydWN0IG1ha2VfdW5zaWduZWQ8bG9uZyBsb25nPgp7Cgl0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyB0eXBlOwp9Ow==