#include <stdio.h>
int hex(int ch) {
int value = -1;
if (ch >= '0' && ch <= '9') {
value = ch - '0';
} else if (ch >= 'A' && ch <= 'F') {
value = ch - 'A' + 10;
} else if (ch >= 'a' && ch <= 'f') {
value = ch - 'a' + 10;
}
return value;
}
int kod(FILE *out) {
int ch = getchar();
return ch != EOF && ch != '\n' && ch != ' ' &&
fprintf(out, "%02X", (unsigned int)ch) >= 0;
}
int dekod(FILE *out) {
int first = hex(getchar());
int second = hex(getchar());
return first >= 0 && second >= 0 &&
fputc(first * 16 + second, out) != EOF;
}
int main(int argc, char **argv) {
FILE *out = NULL;
int valid = 0;
int separator = ' ';
if (argc == 2 &&
(argv[1][0] == '0' || argv[1][0] == '1') &&
argv[1][1] == '\0') {
out = tmpfile();
valid = out != NULL;
}
while (valid && separator == ' ') {
if (argv[1][0] == '0') {
valid = kod(out);
} else {
valid = dekod(out);
}
if (valid) {
separator = getchar();
valid = separator == ' ' || separator == '\n' || separator == EOF;
if (valid && separator == ' ') {
valid = fputc(' ', out) != EOF;
}
}
}
if (valid) {
rewind(out);
int ch;
while ((ch = fgetc(out)) != EOF) {
putchar(ch);
}
putchar('\n');
} else {
printf("n/a\n");
}
if (out != NULL) {
fclose(out);
}
return 0;
}