#include <iostream>
#include <iomanip>
struct hex
{
hex(int val) : value(val){ }
int value;
};
std::ostream& operator<<(std::ostream& os, hex h)
{
auto oldflags = os.flags();
auto oldfill = os.fill();
os.setf(std::ios::hex, std::ios::basefield);
os.setf(std::ios::uppercase);
os.fill('0');
os << h.value;
os.fill(oldfill);
os.setf(oldflags);
return os;
}
int main()
{
for (int i = 0; i < 4; i++)
std::cout << std::setw(5) << ' ' << std::setw(16) << hex(i) << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnN0cnVjdCBoZXgKewogICAgaGV4KGludCB2YWwpIDogdmFsdWUodmFsKXsgfQogICAgaW50IHZhbHVlOwp9OwoKc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3MsIGhleCBoKQp7CiAgICBhdXRvIG9sZGZsYWdzID0gb3MuZmxhZ3MoKTsKICAgIGF1dG8gb2xkZmlsbCA9IG9zLmZpbGwoKTsKCiAgICBvcy5zZXRmKHN0ZDo6aW9zOjpoZXgsIHN0ZDo6aW9zOjpiYXNlZmllbGQpOwogICAgb3Muc2V0ZihzdGQ6Omlvczo6dXBwZXJjYXNlKTsKICAgIG9zLmZpbGwoJzAnKTsKCiAgICBvcyA8PCBoLnZhbHVlOwoKICAgIG9zLmZpbGwob2xkZmlsbCk7CiAgICBvcy5zZXRmKG9sZGZsYWdzKTsKICAgIHJldHVybiBvczsKfQoKaW50IG1haW4oKQp7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKICAgICAgICBzdGQ6OmNvdXQgPDwgc3RkOjpzZXR3KDUpIDw8ICcgJyA8PCBzdGQ6OnNldHcoMTYpIDw8IGhleChpKSA8PCBzdGQ6OmVuZGw7Cn0=