#include <bits/stdc++.h>   using namespace std;   bool isValid(string s) {     bool valid = true;     if (s.length() < 1 || s.length() > 16) return false;     for (int i = 0; i < s.length(); i++) {       if (s[i] < 48 || (s[i] > 57 && s[i] < 65) || (s[i] > 90 && s[i] < 95) ||           (s[i] > 95 && s[i] < 97) || s[i] > 122) {         valid = false;         break;       }     }     return valid;   }   int main() {     string s;     cin >> s;     size_t f1, f2, f3;     f1 = s.find( @ );     if (f1 != string::npos) {       string t;       t = s.substr(0, int(f1));       if (isValid(t)) {         bool resource = false;         f2 = s.find( / );         if (f2 != string::npos && int(f2) > int(f1)) {           resource = true;           t = s.substr(int(f1) + 1, int(f2) - int(f1) - 1);         } else           t = s.substr(int(f1) + 1);         if (t.length() < 1 || t.length() > 32) {           cout <<  NO ;           return 0;         }         do {           f3 = t.find( . );           if (f3 != string::npos && int(f3) > 0) {             string aux = t.substr(0, int(f3));             if (isValid(aux))               t.erase(0, int(f3) + 1);             else {               cout <<  NO ;               return 0;             }           } else {             if (isValid(t)) {               if (resource) {                 string aux = s.substr(int(f2) + 1);                 if (isValid(aux))                   cout <<  YES ;                 else                   cout <<  NO ;                 return 0;               } else {                 cout <<  YES ;                 return 0;               }             } else {               cout <<  NO ;               return 0;             }           }         } while (f3 != string::npos);       } else {         cout <<  NO ;         return 0;       }     } else {       cout <<  NO ;       return 0;     }   }   