#include <iostream>
#include <string>
using namespace std;
string decode_message(int n, string msg) {
if (msg.empty() || msg == "NULL") {
return "NULL";
}
string decoded_message = "";
bool dot_encountered = false;
for (int i = 0; i < msg.length(); ++i) {
if (msg[i] == '-') {
decoded_message += ' ';
} else if (msg[i] == '#' && i + 1 < msg.length() && isdigit(msg[i + 1])) {
decoded_message += static_cast<char>(msg[i + 1] - '0' + 64);
++i; // Skip the number character
} else if (msg[i] == '.') {
decoded_message += '.';
dot_encountered = true;
} else if (msg[i] == '_') {
decoded_message += ' ';
} else if (isdigit(msg[i])) {
if (dot_encountered) {
decoded_message += msg[i];
} else {
decoded_message += static_cast<char>(msg[i] - '0' + 64);
}
}
}
for (char& c : decoded_message) {
c = toupper(c);
}
return decoded_message;
}
int main() {
int n;
string msg;
cin >> n;
cin.ignore(); // Ignore newline character after reading integer
getline(cin, msg);
cout << decode_message(n, msg) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cmluZyBkZWNvZGVfbWVzc2FnZShpbnQgbiwgc3RyaW5nIG1zZykgewogICAgaWYgKG1zZy5lbXB0eSgpIHx8IG1zZyA9PSAiTlVMTCIpIHsKICAgICAgICByZXR1cm4gIk5VTEwiOwogICAgfQoKICAgIHN0cmluZyBkZWNvZGVkX21lc3NhZ2UgPSAiIjsKICAgIGJvb2wgZG90X2VuY291bnRlcmVkID0gZmFsc2U7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG1zZy5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgaWYgKG1zZ1tpXSA9PSAnLScpIHsKICAgICAgICAgICAgZGVjb2RlZF9tZXNzYWdlICs9ICcgJzsKICAgICAgICB9IGVsc2UgaWYgKG1zZ1tpXSA9PSAnIycgJiYgaSArIDEgPCBtc2cubGVuZ3RoKCkgJiYgaXNkaWdpdChtc2dbaSArIDFdKSkgewogICAgICAgICAgICBkZWNvZGVkX21lc3NhZ2UgKz0gc3RhdGljX2Nhc3Q8Y2hhcj4obXNnW2kgKyAxXSAtICcwJyArIDY0KTsKICAgICAgICAgICAgKytpOyAvLyBTa2lwIHRoZSBudW1iZXIgY2hhcmFjdGVyCiAgICAgICAgfSBlbHNlIGlmIChtc2dbaV0gPT0gJy4nKSB7CiAgICAgICAgICAgIGRlY29kZWRfbWVzc2FnZSArPSAnLic7CiAgICAgICAgICAgIGRvdF9lbmNvdW50ZXJlZCA9IHRydWU7CiAgICAgICAgfSBlbHNlIGlmIChtc2dbaV0gPT0gJ18nKSB7CiAgICAgICAgICAgIGRlY29kZWRfbWVzc2FnZSArPSAnICc7CiAgICAgICAgfSBlbHNlIGlmIChpc2RpZ2l0KG1zZ1tpXSkpIHsKICAgICAgICAgICAgaWYgKGRvdF9lbmNvdW50ZXJlZCkgewogICAgICAgICAgICAgICAgZGVjb2RlZF9tZXNzYWdlICs9IG1zZ1tpXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGRlY29kZWRfbWVzc2FnZSArPSBzdGF0aWNfY2FzdDxjaGFyPihtc2dbaV0gLSAnMCcgKyA2NCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZm9yIChjaGFyJiBjIDogZGVjb2RlZF9tZXNzYWdlKSB7CiAgICAgICAgYyA9IHRvdXBwZXIoYyk7CiAgICB9CgogICAgcmV0dXJuIGRlY29kZWRfbWVzc2FnZTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbjsKICAgIHN0cmluZyBtc2c7CiAgICAKICAgIGNpbiA+PiBuOwogICAgY2luLmlnbm9yZSgpOyAvLyBJZ25vcmUgbmV3bGluZSBjaGFyYWN0ZXIgYWZ0ZXIgcmVhZGluZyBpbnRlZ2VyCiAgICBnZXRsaW5lKGNpbiwgbXNnKTsKCiAgICBjb3V0IDw8IGRlY29kZV9tZXNzYWdlKG4sIG1zZykgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=