#include <iostream>
#include <limits>
template <typename CharT, typename OutIt>
class bin_num_put : public std::num_put<CharT, OutIt> {
OutIt do_put(OutIt to, std::ios_base& fmt, CharT, unsigned long long v) const
{
using std::begin; using std::end;
char narrow[] = "01";
CharT wide[2];
std::use_facet<std::ctype<CharT> >(fmt.getloc())
.widen(begin(narrow), end(narrow) - 1, begin(wide));
CharT buffer[std::numeric_limits<unsigned long long>::digits];
std::fill(begin(buffer), end(buffer), wide[0]);
for (CharT* e = end(buffer); v != 0; v /= 2)
*--e = wide[v % 2];
return std::copy(begin(buffer), end(buffer), to);
}
OutIt do_put(OutIt to, std::ios_base& fmt, CharT fill, long long v) const
{ return do_put(to, fmt, fill, static_cast<unsigned long long>(v)); }
};
template <typename CharT, typename traits>
std::basic_ios<CharT, traits>& bin(std::basic_ios<CharT, traits>& ios)
{
ios.imbue(std::locale(ios.getloc(),
new bin_num_put<CharT, std::ostreambuf_iterator<CharT> >()));
return ios;
}
int main()
{
std::cout << bin << 18446744073709551615ull << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGltaXRzPgoKdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJULCB0eXBlbmFtZSBPdXRJdD4KY2xhc3MgYmluX251bV9wdXQgOiBwdWJsaWMgc3RkOjpudW1fcHV0PENoYXJULCBPdXRJdD4gewogIE91dEl0IGRvX3B1dChPdXRJdCB0bywgc3RkOjppb3NfYmFzZSYgZm10LCBDaGFyVCwgdW5zaWduZWQgbG9uZyBsb25nIHYpIGNvbnN0CiAgewogICAgdXNpbmcgc3RkOjpiZWdpbjsgdXNpbmcgc3RkOjplbmQ7ICAgIAogICAgY2hhciBuYXJyb3dbXSA9ICIwMSI7CiAgICBDaGFyVCB3aWRlWzJdOwogICAgc3RkOjp1c2VfZmFjZXQ8c3RkOjpjdHlwZTxDaGFyVD4gPihmbXQuZ2V0bG9jKCkpCiAgICAgIC53aWRlbihiZWdpbihuYXJyb3cpLCBlbmQobmFycm93KSAtIDEsIGJlZ2luKHdpZGUpKTsKICAgIENoYXJUIGJ1ZmZlcltzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmcgbG9uZz46OmRpZ2l0c107CiAgICBzdGQ6OmZpbGwoYmVnaW4oYnVmZmVyKSwgZW5kKGJ1ZmZlciksIHdpZGVbMF0pOwogICAgZm9yIChDaGFyVCogZSA9IGVuZChidWZmZXIpOyB2ICE9IDA7IHYgLz0gMikKICAgICAgKi0tZSA9IHdpZGVbdiAlIDJdOwogICAgcmV0dXJuIHN0ZDo6Y29weShiZWdpbihidWZmZXIpLCBlbmQoYnVmZmVyKSwgdG8pOwogIH0KICBPdXRJdCBkb19wdXQoT3V0SXQgdG8sIHN0ZDo6aW9zX2Jhc2UmIGZtdCwgQ2hhclQgZmlsbCwgbG9uZyBsb25nIHYpIGNvbnN0CiAgeyByZXR1cm4gZG9fcHV0KHRvLCBmbXQsIGZpbGwsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4odikpOyB9Cn07CnRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgdHJhaXRzPgpzdGQ6OmJhc2ljX2lvczxDaGFyVCwgdHJhaXRzPiYgYmluKHN0ZDo6YmFzaWNfaW9zPENoYXJULCB0cmFpdHM+JiBpb3MpCnsKICBpb3MuaW1idWUoc3RkOjpsb2NhbGUoaW9zLmdldGxvYygpLAogICAgICAgICAgICAgICAgICAgICAgICBuZXcgYmluX251bV9wdXQ8Q2hhclQsIHN0ZDo6b3N0cmVhbWJ1Zl9pdGVyYXRvcjxDaGFyVD4gPigpKSk7CiAgcmV0dXJuIGlvczsKfQoKaW50IG1haW4oKQp7CiAgc3RkOjpjb3V0IDw8IGJpbiA8PCAxODQ0Njc0NDA3MzcwOTU1MTYxNXVsbCA8PCBzdGQ6OmVuZGw7Cn0=