#include <bits/stdc++.h>
using namespace std;
char s[400005];
int main() {
  int n = strlen(gets(s + 1)) + 2;
  s[0] = s[n - 1] = '.';
  if (adjacent_find(s, s + n, [](char x, char y) {
        return x == '.' && y == '.';
      }) != s + n)
    return puts("NO") & 0;
  vector<string> u;
  for (auto i = strtok(s, "."); i; i = strtok(0, ".")) u.push_back(i);
  if (u.size() <= 1 || u[0].size() > 8 || u.back().size() > 3 ||
      any_of(u.begin() + 1, u.end() - 1,
             [](const string& s) { return s.size() < 2 || s.size() > 11; }))
    return puts("NO") & 0;
  puts("YES");
  for (size_t i = 1; i + 1 < u.size(); i++) {
    u[i - 1] += '.';
    if (u[i].size() == 11) {
      u[i - 1] += u[i].substr(0, 3);
      u[i] = u[i].substr(3);
    } else if (u[i].size() == 10) {
      u[i - 1] += u[i].substr(0, 2);
      u[i] = u[i].substr(2);
    } else {
      u[i - 1] += u[i][0];
      u[i] = u[i].substr(1);
    }
  }
  u[u.size() - 2] += '.';
  u[u.size() - 2] += u.back();
  u.pop_back();
  for (auto& s : u) printf("%s\n", s.c_str());
}
