#include <string>
#include <iostream>
std::size_t preceding_pow2(std::size_t v)
{
v--;
v |= v >> 1;
v |= v >> 2;
v |= v >> 4;
v |= v >> 8;
v |= v >> 16;
return (++v) >> 1;
}
int main(int argc, char* argv[])
{
std::size_t n = argc > 1 ? std::stoull(argv[1]) : 1ULL << 6;
for (std::size_t i = 0; i < n; ++i) {
std::cout << i << " " << preceding_pow2(i) << std::endl;
}
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RkOjpzaXplX3QgcHJlY2VkaW5nX3BvdzIoc3RkOjpzaXplX3QgdikKewogICAgdi0tOwogICAgdiB8PSB2ID4+IDE7CiAgICB2IHw9IHYgPj4gMjsKICAgIHYgfD0gdiA+PiA0OwogICAgdiB8PSB2ID4+IDg7CiAgICB2IHw9IHYgPj4gMTY7CiAgICByZXR1cm4gKCsrdikgPj4gMTsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKewogICAgc3RkOjpzaXplX3QgbiA9IGFyZ2MgPiAxID8gc3RkOjpzdG91bGwoYXJndlsxXSkgOiAxVUxMIDw8IDY7CiAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8IGkgPDwgIiAiIDw8IHByZWNlZGluZ19wb3cyKGkpIDw8IHN0ZDo6ZW5kbDsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==