#include <iostream>
#include <unordered_map>
#include <string>
class UserRegistry {
public:
void UserEntered(const std::string& user) {
RegisterUserAction(user, "entered");
}
void UserExited(const std::string& user) {
RegisterUserAction(user, "exited");
}
private:
void LogAction(const std::string& user, const std::string& action, bool is_anomaly = false) {
std::cout << user << " " << action << (is_anomaly ? " (ANOMALY)" : "") << std::endl;
}
void RegisterUserAction(const std::string& user, const std::string& action) {
bool anomaly = false;
if (action == "entered" && registry[user] % 2 == 1) {
anomaly = true;
}
if (action == "exited" && registry[user] % 2 == 0) {
anomaly = true;
}
if (!anomaly)
registry[user]++;
LogAction(user, action, anomaly);
}
private:
std::unordered_map<std::string, int> registry;
};
int main() {
UserRegistry registry;
int log_length;
std::cin >> log_length;
for (int i = 0; i < log_length; ++i) {
std::string user, action;
std::cin >> action >> user;
if (action == "entry")
registry.UserEntered(user);
else if (action == "exit")
registry.UserExited(user);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPHN0cmluZz4KCmNsYXNzIFVzZXJSZWdpc3RyeSB7CnB1YmxpYzoKICB2b2lkIFVzZXJFbnRlcmVkKGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VyKSB7CiAgICBSZWdpc3RlclVzZXJBY3Rpb24odXNlciwgImVudGVyZWQiKTsKICB9CgogIHZvaWQgVXNlckV4aXRlZChjb25zdCBzdGQ6OnN0cmluZyYgdXNlcikgewogICAgUmVnaXN0ZXJVc2VyQWN0aW9uKHVzZXIsICJleGl0ZWQiKTsKICB9Cgpwcml2YXRlOgogIHZvaWQgTG9nQWN0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiB1c2VyLCBjb25zdCBzdGQ6OnN0cmluZyYgYWN0aW9uLCBib29sIGlzX2Fub21hbHkgPSBmYWxzZSkgewogICAgc3RkOjpjb3V0IDw8IHVzZXIgPDwgIiAiIDw8IGFjdGlvbiA8PCAoaXNfYW5vbWFseSA/ICIgKEFOT01BTFkpIiA6ICIiKSA8PCBzdGQ6OmVuZGw7CiAgfQoKICB2b2lkIFJlZ2lzdGVyVXNlckFjdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgdXNlciwgY29uc3Qgc3RkOjpzdHJpbmcmIGFjdGlvbikgewogICAgYm9vbCBhbm9tYWx5ID0gZmFsc2U7CiAgICBpZiAoYWN0aW9uID09ICJlbnRlcmVkIiAmJiByZWdpc3RyeVt1c2VyXSAlIDIgPT0gMSkgewogICAgICBhbm9tYWx5ID0gdHJ1ZTsKICAgIH0KCiAgICBpZiAoYWN0aW9uID09ICJleGl0ZWQiICYmIHJlZ2lzdHJ5W3VzZXJdICUgMiA9PSAwKSB7CiAgICAgIGFub21hbHkgPSB0cnVlOwogICAgfQoKICAgIGlmICghYW5vbWFseSkKICAgICAgcmVnaXN0cnlbdXNlcl0rKzsKCiAgICBMb2dBY3Rpb24odXNlciwgYWN0aW9uLCBhbm9tYWx5KTsKICB9Cgpwcml2YXRlOgogIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmluZywgaW50PiByZWdpc3RyeTsKfTsKCmludCBtYWluKCkgewogIFVzZXJSZWdpc3RyeSByZWdpc3RyeTsKICBpbnQgbG9nX2xlbmd0aDsKICBzdGQ6OmNpbiA+PiBsb2dfbGVuZ3RoOwogIGZvciAoaW50IGkgPSAwOyBpIDwgbG9nX2xlbmd0aDsgKytpKSB7CiAgICBzdGQ6OnN0cmluZyB1c2VyLCBhY3Rpb247CiAgICBzdGQ6OmNpbiA+PiBhY3Rpb24gPj4gdXNlcjsKCiAgICBpZiAoYWN0aW9uID09ICJlbnRyeSIpCiAgICAgIHJlZ2lzdHJ5LlVzZXJFbnRlcmVkKHVzZXIpOwogICAgZWxzZSBpZiAoYWN0aW9uID09ICJleGl0IikKICAgICAgcmVnaXN0cnkuVXNlckV4aXRlZCh1c2VyKTsKICB9CgogIHJldHVybiAwOwp9