#include <bits/stdc++.h>
using namespace std;
string str;
bool judge(char c) {
  return (c == '_' || islower(c) || isdigit(c) || isupper(c));
}
int main() {
  int cnt = 0, count = 0, type = 0, len;
  cin >> str;
  type = 0;
  len = str.length();
  for (int i = 0; i < len; i++) {
    char c = str[i];
    if (c == '@') {
      if (type == 1) {
        cout << "NO" << endl;
        return 0;
      }
      type = 1;
      if (cnt < 1 || cnt > 16) {
        cout << "NO" << endl;
        return 0;
      };
      cnt = 0;
    } else if (c == '/') {
      if (type == 2) {
        cout << "NO" << endl;
        return 0;
      }
      type = 2;
      if (cnt < 1 || cnt > 16) {
        cout << "NO" << endl;
        return 0;
      }
      if (count < 1 || count > 32) {
        cout << "NO" << endl;
        return 0;
      }
      cnt = 0;
    } else if (c == '.') {
      if (type != 1) {
        cout << "NO" << endl;
        return 0;
      }
      if (cnt < 1 || cnt > 16) {
        cout << "NO" << endl;
        return 0;
      }
      cnt = 0;
    } else if (c > 127 || c < 33) {
      cout << "NO" << endl;
      return 0;
    } else if (type == 0) {
      if (judge(c)) {
        cnt++;
        continue;
      } else {
        cout << "NO" << endl;
        return 0;
      }
    } else if (type == 1) {
      if (judge(c)) {
        cnt++;
        count++;
        continue;
      } else {
        cout << "NO" << endl;
        return 0;
      }
    } else if (type == 2) {
      if (judge(c)) {
        cnt++;
        continue;
      } else {
        cout << "NO" << endl;
        return 0;
      }
    }
  }
  if (cnt < 0 || cnt > 16) {
    cout << "NO" << endl;
    return 0;
  }
  if (type >= 1 && cnt > 0) {
    cout << "YES" << endl;
    return 0;
  } else {
    cout << "NO" << endl;
    return 0;
  }
}
