#include <iostream>
using namespace std;

int countAt(string &s)
{
    int amount = 0;

    for (char si : s)
    {
        if (si == '@')
            amount++;
        if (amount > 1)
            return false;
    }

    return amount == 1;
}

bool checkLocal(string &local)
{
    for (char si : local)
    {
        if ('A' <= si && si <= 'Z')
            continue;
        if ('a' <= si && si <= 'z')
            continue;
        if ('0' <= si && si <= '9')
            continue;
        if (si == '.' || si == '_')
            continue;
        return false;
    }
    return true;
}

bool checkDomain(string &domain)
{
    for (char si : domain)
    {
        if ('A' <= si && si <= 'Z')
            continue;
        if ('a' <= si && si <= 'z')
            continue;
        if (si == '.')
            continue;
        return false;
    }

    int amount = 0;

    for (char si : domain)
    {
        if (si == '.')
            amount++;
    }

    if (amount == 0)
        return false;

    for (int i = 0; i < domain.length() - 1; i++)
    {
        if (domain[i] == '.' && domain[i + 1] == '.')
            return false;
    }
    return true;
}

bool check(string &s)
{
    if (countAt(s) == false)
        return false;

    string local = "";
    string domain = "";

    int i = 0;
    while (s[i] != '@')
    {
        local += s[i];
        i++;
    }

    i++;

    while (i < s.length())
    {
        domain += s[i];
        i++;
    }

    if (local.length() == 0 || domain.length() == 0)
        return false;

    if (checkLocal(local) == false)
        return false;

    if (checkDomain(domain) == false)
        return false;
    return true;
}

int main()
{
    string s;
    getline(cin, s);

    cout << (check(s) ? "VALID\n" : "INVALID\n");

    return 0;
}