#include <stdio.h>
int hex_value(char c) {
int res = -1; // результат
if (c >= '0' && c <= '9') {
res = c - '0';
} else if (c >= 'A' && c <= 'F') {
res = c - 'A' + 10;
}
return res;
}
int print_hex_code(char c) {
int n = c; // числовой код символа
int a = n / 16; // первая цифра HEX-кода
int b = n % 16; // вторая цифра HEX-кода
if (a < 10) {
printf("%c", a + '0');
} else {
printf("%c", a - 10 + 'A');
}
if (b < 10) {
printf("%c", b + '0');
} else {
printf("%c", b - 10 + 'A');
}
return 1;
}
int print_decoded_char(char a, char b) {
int res = 1; // результат
int n1 = hex_value(a); // первое число из HEX
int n2 = hex_value(b); // второе число из HEX
if (n1 == -1 || n2 == -1) {
res = 0;
} else {
printf("%c", n1 * 16 + n2);
}
return res;
}
int encode_mode() {
int res = 1; // результат
char c; // символ
char sep; // разделитель
if (scanf("%c%c", &c, &sep) != 2) {
res = 0;
}
while (res == 1) {
if (sep != ' ' && sep != '\n') {
res = 0;
} else {
print_hex_code(c);
if (sep == '\n') {
res = 2;
} else {
printf(" ");
if (scanf("%c%c", &c, &sep) != 2) {
res = 0;
}
}
}
}
return res;
}
int decode_mode() {
int res = 1; // результат
char a; // первый HEX-символ
char b; // второй HEX-символ
char sep; // разделитель
if (scanf("%c%c%c", &a, &b, &sep) != 3) {
res = 0;
}
while (res == 1) {
if (sep != ' ' && sep != '\n') {
res = 0;
} else if (!print_decoded_char(a, b)) {
res = 0;
} else {
if (sep == '\n') {
res = 2;
} else {
printf(" ");
if (scanf("%c%c%c", &a, &b, &sep) != 3) {
res = 0;
}
}
}
}
return res;
}
int main(int argc, char *argv[]) {
int res = 0; // результат
if (argc == 2 && argv[1][1] == '\0') {
if (argv[1][0] == '0') {
res = encode_mode();
} else if (argv[1][0] == '1') {
res = decode_mode();
}
}
if (res == 0) {
printf("n/a");
}
return 0;
}