#include <iostream>
#include <string>
#include <vector>
#include <stdexcept>
std::vector<std::string> parseCppName(std::string line)
{
std::vector<std::string> retVal;
int level = 0;
char closeChars[256];
size_t startPart = 0;
for (size_t i = 0; i < line.length(); ++i)
{
if (line[i] == ':' && level == 0)
{
if (i + 1 >= line.length() || line[i + 1] != ':')
throw std::runtime_error("missing :");
retVal.push_back(line.substr(startPart, i - startPart));
startPart = ++i + 1;
}
else if (line[i] == '(') {
closeChars[level++] = ')';
}
else if (line[i] == '<') {
closeChars[level++] = '>';
}
else if (level > 0 && line[i] == closeChars[level - 1]) {
--level;
}
else if (line[i] == '>' || line[i] == ')') {
throw std::runtime_error("Extra )>");
}
}
if (level > 0)
throw std::runtime_error("Missing )>");
retVal.push_back(line.substr(startPart));
return retVal;
}
int main() {
std::string line;
while (std::getline(std::cin, line)) {
try {
std::vector<std::string> parts = parseCppName(line);
for (size_t i = 0; i + 2 < parts.size(); ++i)
std::cout << parts[i] << "@";
if (parts.size() > 1)
std::cout << parts[parts.size() - 2] << "@@";
std::cout << parts[parts.size() - 1] << "\n";
} catch (std::runtime_error& ex) {
std::cout << "Error: " << ex.what() << "\nfor: " << line << "\n";
}
}
}