#include <bits/stdc++.h>
using namespace std;
long long int fact(long long int n) {
  if (n == 0 || n == 1)
    return 1;
  else
    return n * fact(n - 1);
}
long long int gcd(long long int a, long long int b) {
  if (a < 0) a = -a;
  if (b < 0) b = -b;
  if (a == 1 || b == 1)
    return 1;
  else if (a == 0 && b != 0)
    return b;
  else if (b == 0 && a != 0)
    return a;
  else {
    long long int r = a > b ? a % b : b % a;
    if (r == 0)
      return min(a, b);
    else
      return gcd(min(a, b), r);
  }
}
int main() {
  string s;
  cin >> s;
  vector<string> v;
  int pd, nd, ind = 0, d = 0;
  for (int i = 0; i < s.size(); i++)
    if (s[i] == '.') d++;
  if (d == 0)
    cout << "NO";
  else {
    if (s[0] == '.')
      cout << "NO";
    else {
      int st = 0;
      for (int i = 1; i < s.size(); i++) {
        if (s[i] == '.') {
          pd = i;
          int j = i;
          j++;
          if (j == s.size()) {
            ind = 1;
            break;
          }
          while (s[j] != '.') {
            j++;
            if (j == s.size()) {
              ind = 1;
              break;
            }
          }
          if (ind == 1) break;
          nd = j;
          if (pd - st <= 8 && pd - st >= 1 && nd - pd - 1 >= 2 &&
              nd - pd - 1 <= 11) {
            if (nd - pd - 1 >= 4) {
              v.push_back(s.substr(st, pd - st + 4));
              st = pd + 4;
            } else {
              v.push_back(s.substr(st, pd - st + 2));
              st = pd + 2;
            }
          } else {
            cout << "NO";
            return 0;
          }
        }
      }
      if (pd - st <= 8 && pd - st >= 1 && s.size() - 1 > pd &&
          s.size() - 1 <= pd + 3) {
        v.push_back(s.substr(st, s.size() - st));
        cout << "YES" << endl;
        for (int i = 0; i < v.size(); i++) cout << v[i] << endl;
      } else
        cout << "NO";
    }
  }
  return 0;
}
