#include <stdio.h>
#include <regex.h>
#include <stdlib.h>
#include <string.h>

#define MEM_STEP 1000

char* input_text(){
    int sizetext = MEM_STEP;
    int index = 0;
    char c;
    char* text = malloc(MEM_STEP);
    if (!text) {return NULL;}
    
    while((c = getchar()) != EOF){
        if(index >= sizetext-1){
            sizetext+=MEM_STEP;
            text = realloc(text,sizetext);
            if (!text) {return NULL;}
        }
        text[index]=c;
        index++;
        if (strstr(text, "Fin.") != NULL) {
            break;
        }
    }
    text[index]='\0';
    return text;
}
int main()
{
    char* text = input_text();

    regex_t regex;

    char* pattern = "([A-Za-z0-9_]+)@([A-Za-z0-9_-]+):\\s?~\\s?# (.+)";

    regcomp(&regex, pattern, REG_EXTENDED);

    regmatch_t match[4];

    while (regexec(&regex, text, 4, match, 0) == 0)
    {
        printf("%.*s - ", match[0].rm_eo - match[0].rm_so, text + match[0].rm_so);
        text += match[0].rm_eo;
    }
    regfree(&regex);
    return 0;
}