1 1
1
2
 6 3
1 2 3 4 5 6
3 5 1
 5 5
5 6 3 2 1
4 3 1 5 6
 1 1
1
1
 10 10
1 2 3 4 5 6 7 8 9 10
6 7 8 9 10 1 2 3 4 5
 1 2
1
1 2
 10 10
9 12 15 2 4 14 1 5 6 13
12 11 13 1 4 3 8 2 14 15
 9 9
1 2 3 4 5 6 7 8 9
7 8 9 1 2 4 5 6 3
 5 5
9 2 5 1 3
1 7 2 3 9

0
 1
 4
 1
 10
 1
 3
 8
 3

#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  string s;
  cin >> s;
  vector<int> split;
  for (int i = 0; i < s.length(); ++i)
    if (s[i] == '.') split.push_back(i);
  if (split.size() == 0) {
    cout << "NO";
    return 0;
  }
  int prev = split[0];
  if (split[0] > 8) {
    cout << "NO";
    return 0;
  }
  for (int i = 1; i < split.size(); ++i) {
    if (split[i] - prev > 12 || split[i] - prev < 3) {
      cout << "NO";
      return 0;
    }
    prev = split[i];
  }
  if (s.length() - split.back() == 1 || s.length() - split.back() > 4) {
    cout << "NO";
    return 0;
  }
  cout << "YES" << endl;
  string cur;
  int i = 0;
  while (i < s.length()) {
    cur = "";
    while (s[i] != '.') {
      cur += s[i];
      ++i;
    }
    int add = 0;
    while (i + add < s.length() && add <= 3 &&
           !(i + add + 1 < s.length() && s[i + add + 1] == '.')) {
      cur += s[i + add];
      ++add;
    }
    i = i + add;
    cout << cur << endl;
  }
  cin >> s;
  return 0;
}
