#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define max 100
typedef struct{
    char username[21];
    int passwordhash;
}user;
user users[max];
int count =0;
int hashpassword(char password[]){
    int hash=0;
    for(int i=0;password[i]!='\0';i++){
        hash=(hash+password[i])%1000;
    }
    return hash;
}
void registerh(char username[],char password[]){
    for(int i=0;i<count;i++){
        if(strcmp(users[i].username,username)==0){
            printf("Username already exists!\n");
            return;
        }
    }
    strcpy(users[count].username,username);
    users[count].passwordhash=hashpassword(password);
    count++;
    printf("Registered successfully\n");
    
}
void loginuser(char username[],char password[]){
    int hash=hashpassword(password);
    for(int i=0;i<count;i++){
        if(strcmp(user[i].username,username)==0){
            if(user[i].passwordhash==hash){
                printf("Login  successful!\n");
                return ;
                
            }else{
                printf("Login failed!\n");
                return;
            }
        }
        
    }
    printf("Login failed!\n");
}
int main(){
    int n;
    scanf("%d",&n);
    if(n<0){
        printf("Invalid input\n");
        return 0;
    }
    for(int i=0;i<n;i++){
        char op[31];
        scanf("%s",op);
        if(strcmp(op,"REGISTER")==0){
            char username[100];
            char password[100];
            scanf("%s %s",username,password);
            registerh(username,password);
            
        }else if(strcmp(op,"LOGIN")==0){
            char username[100];
            char password[100];
            scanf("%s %s",username,password);
            loginuser(username,password);
            
        }
        }
        return 0;
    }