#include <bits/stdc++.h>
using namespace std;
char s[10002012];
int A[10002012];
int len, now, T, ans;
inline int find_dot() {
  ++now;
  while (now < len && s[now] != '.') ++now;
  if (now == len)
    return -1;
  else
    return now;
}
bool Deal() {
  len = strlen(s);
  now = 0;
  T = find_dot();
  if (s[0] == '.') return 0;
  if (T == -1)
    return 0;
  else {
    if (now > 8 || now == 0) return 0;
    while (now < len) {
      int Now = now;
      T = find_dot();
      if (T == -1) {
        if (len - Now - 1 == 0 || len - Now - 1 > 3) return 0;
      } else {
        if (now - Now - 1 <= 1 || now - Now - 1 > 11) return 0;
        switch (now - Now - 1) {
          case 2:
            A[ans++] = Now + 1;
            break;
          case 3:
            A[ans++] = Now + 1;
            break;
          case 4:
            A[ans++] = Now + 1;
            break;
          case 5:
            A[ans++] = Now + 1;
            break;
          case 6:
            A[ans++] = Now + 1;
            break;
          case 7:
            A[ans++] = Now + 1;
            break;
          case 8:
            A[ans++] = Now + 1;
            break;
          case 9:
            A[ans++] = Now + 1;
            break;
          case 10:
            A[ans++] = Now + 2;
            break;
          case 11:
            A[ans++] = Now + 3;
            break;
        }
      }
    }
  }
  return 1;
}
int main() {
  scanf("%s", s);
  if (Deal()) {
    printf("YES\n");
    int j = 0;
    for (int i = 0; i < len; ++i) {
      printf("%c", s[i]);
      while (j < ans && i > A[j]) ++j;
      if (j < ans && A[j] == i) printf("\n");
    }
  } else
    printf("NO");
  return 0;
}
