#include <stdio.h>
int hex_to_dec(char c) {
int result = -1;
if (c >= '0' && c <= '9') {
result = c - '0';
} else if (c >= 'A' && c <= 'F') {
result = c - 'A' + 10;
}
return result;
}
char dec_to_hex(int n) {
char result;
if (n < 10) {
result = '0' + n;
} else {
result = 'A' + (n - 10);
}
return result;
}
void encode_char(char c) {
unsigned char value = (unsigned char)c;
int high = value / 16;
int low = value % 16;
printf("%c%c", dec_to_hex(high), dec_to_hex(low));
}
void decode_hex(char a, char b) {
int high = hex_to_dec(a);
int low = hex_to_dec(b);
if (high == -1 || low == -1) {
printf("n/a");
return;
}
char result = (char)(high * 16 + low);
printf("%c", result);
}
int encode_mode(void) {
char c;
int first = 1;
while ((c = getchar()) != '\n' && c != EOF) {
if (c == ' ') {
continue;
}
if (!first) {
printf(" ");
}
encode_char(c);
first = 0;
c = getchar();
if (c != ' ' && c != '\n' && c != EOF) {
return 0;
}
if (c == '\n' || c == EOF) {
break;
}
}
return !first;
}
int decode_mode(void) {
char a, b;
int first = 1;
while (scanf("%c%c", &a, &b) == 2) {
if (!first) {
printf(" ");
}
if (hex_to_dec(a) == -1 || hex_to_dec(b) == -1) {
return 0;
}
decode_hex(a, b);
first = 0;
int sep = getchar();
if (sep == '\n' || sep == EOF) {
break;
}
if (sep != ' ') {
return 0;
}
}
return !first;
}
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("n/a");
return 0;
}
int ok = 0;
if (argv[1][0] == '0' && argv[1][1] == '\0') {
ok = encode_mode();
} else if (argv[1][0] == '1' && argv[1][1] == '\0') {
ok = decode_mode();
}
if (!ok) {
printf("n/a");
}
return 0;
}