#include <stdio.h>
union Float64 {
double y;
char bytes[8];
};
int main(void) {
const char digits[] = "0123456789abcdef";
union Float64 q;
q.y = 1;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 2;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 3;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 4;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 5;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 6;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 7;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 8;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 9;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = -1;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = 0;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = -1;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = -2;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
q.y = -3;
for (int i = 7; i >= 0; i--) {
char a = digits[q.bytes[i] & 0x0f]; // lower nibble
char b = digits[(q.bytes[i] & 0xf0) >> 4]; // upper nibble
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp1bmlvbiBGbG9hdDY0IHsKCWRvdWJsZSB5OwoJY2hhciBieXRlc1s4XTsKfTsKCmludCBtYWluKHZvaWQpIHsKCWNvbnN0IGNoYXIgZGlnaXRzW10gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7Cgl1bmlvbiBGbG9hdDY0IHE7CgoJcHJpbnRmKCJUZXN0IENhc2Ugbj0xXG4iKTsKCglxLnkgPSAxOwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4pXG4iKTsKCglxLnkgPSAyOwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4rMSlcbiIpOwoKCXEueSA9IDM7Cglmb3IgKGludCBpID0gNzsgaSA+PSAwOyBpLS0pIHsKCQljaGFyIGEgPSBkaWdpdHNbcS5ieXRlc1tpXSAmIDB4MGZdOyAgICAgICAgIC8vIGxvd2VyIG5pYmJsZQoJCWNoYXIgYiA9IGRpZ2l0c1socS5ieXRlc1tpXSAmIDB4ZjApID4+IDRdOyAgLy8gdXBwZXIgbmliYmxlCgkJcHJpbnRmKCIlYyVjICIsIGIsIGEpOwoJfQoJcHJpbnRmKCIobisyKVxuIik7CgoJcS55ID0gNDsKCWZvciAoaW50IGkgPSA3OyBpID49IDA7IGktLSkgewoJCWNoYXIgYSA9IGRpZ2l0c1txLmJ5dGVzW2ldICYgMHgwZl07ICAgICAgICAgLy8gbG93ZXIgbmliYmxlCgkJY2hhciBiID0gZGlnaXRzWyhxLmJ5dGVzW2ldICYgMHhmMCkgPj4gNF07ICAvLyB1cHBlciBuaWJibGUKCQlwcmludGYoIiVjJWMgIiwgYiwgYSk7Cgl9CglwcmludGYoIihuKzMpXG4iKTsKCglxLnkgPSA1OwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4rNClcbiIpOwoKCXEueSA9IDY7Cglmb3IgKGludCBpID0gNzsgaSA+PSAwOyBpLS0pIHsKCQljaGFyIGEgPSBkaWdpdHNbcS5ieXRlc1tpXSAmIDB4MGZdOyAgICAgICAgIC8vIGxvd2VyIG5pYmJsZQoJCWNoYXIgYiA9IGRpZ2l0c1socS5ieXRlc1tpXSAmIDB4ZjApID4+IDRdOyAgLy8gdXBwZXIgbmliYmxlCgkJcHJpbnRmKCIlYyVjICIsIGIsIGEpOwoJfQoJcHJpbnRmKCIobis1KVxuIik7CgoJcS55ID0gNzsKCWZvciAoaW50IGkgPSA3OyBpID49IDA7IGktLSkgewoJCWNoYXIgYSA9IGRpZ2l0c1txLmJ5dGVzW2ldICYgMHgwZl07ICAgICAgICAgLy8gbG93ZXIgbmliYmxlCgkJY2hhciBiID0gZGlnaXRzWyhxLmJ5dGVzW2ldICYgMHhmMCkgPj4gNF07ICAvLyB1cHBlciBuaWJibGUKCQlwcmludGYoIiVjJWMgIiwgYiwgYSk7Cgl9CglwcmludGYoIihuKzYpXG4iKTsKCglxLnkgPSA4OwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4rNylcbiIpOwoKCXEueSA9IDk7Cglmb3IgKGludCBpID0gNzsgaSA+PSAwOyBpLS0pIHsKCQljaGFyIGEgPSBkaWdpdHNbcS5ieXRlc1tpXSAmIDB4MGZdOyAgICAgICAgIC8vIGxvd2VyIG5pYmJsZQoJCWNoYXIgYiA9IGRpZ2l0c1socS5ieXRlc1tpXSAmIDB4ZjApID4+IDRdOyAgLy8gdXBwZXIgbmliYmxlCgkJcHJpbnRmKCIlYyVjICIsIGIsIGEpOwoJfQoJcHJpbnRmKCIobis4KVxuIik7CgoJcS55ID0gLTE7Cglmb3IgKGludCBpID0gNzsgaSA+PSAwOyBpLS0pIHsKCQljaGFyIGEgPSBkaWdpdHNbcS5ieXRlc1tpXSAmIDB4MGZdOyAgICAgICAgIC8vIGxvd2VyIG5pYmJsZQoJCWNoYXIgYiA9IGRpZ2l0c1socS5ieXRlc1tpXSAmIDB4ZjApID4+IDRdOyAgLy8gdXBwZXIgbmliYmxlCgkJcHJpbnRmKCIlYyVjICIsIGIsIGEpOwoJfQoJcHJpbnRmKCIoLW4pXG4iKTsKCglxLnkgPSAwOwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4tMSlcbiIpOwoKCXEueSA9IC0xOwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4tMilcbiIpOwoKCXEueSA9IC0yOwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4tMylcbiIpOwoKCXEueSA9IC0zOwoJZm9yIChpbnQgaSA9IDc7IGkgPj0gMDsgaS0tKSB7CgkJY2hhciBhID0gZGlnaXRzW3EuYnl0ZXNbaV0gJiAweDBmXTsgICAgICAgICAvLyBsb3dlciBuaWJibGUKCQljaGFyIGIgPSBkaWdpdHNbKHEuYnl0ZXNbaV0gJiAweGYwKSA+PiA0XTsgIC8vIHVwcGVyIG5pYmJsZQoJCXByaW50ZigiJWMlYyAiLCBiLCBhKTsKCX0KCXByaW50ZigiKG4tNClcbiIpOwoKCXByaW50ZigiRW5kIG9mIFRlc3QiKTsKCglyZXR1cm4gMDsKfQ==