#include <bits/stdc++.h>
using namespace std;
constexpr long long mod = 1e9 + 7;
constexpr long long inf = LLONG_MAX;
long long log2(long long);
template <typename T>
void dispv(vector<T> v);
void solve() {
  string second;
  cin >> second;
  long long p = 0, diff = 0;
  vector<long long> l;
  l.reserve(second.size());
  for (long long i = 0; i < second.size(); ++i) {
    if (second[i] == '.') {
      l.push_back(i);
      diff = i - p;
      if (!p and (diff > 8 or diff < 1)) {
        cout << "NO";
        return;
      } else if (p and (diff > 11 or diff < 2)) {
        cout << "NO";
        return;
      }
      p = i + 1;
    }
  }
  diff = second.size() - p;
  if (!p or diff > 3 or diff < 1) {
    cout << "NO";
    return;
  }
  cout << "YES"
       << "\n";
  long long end = 0;
  for (long long i = 0; i < l.size() - 1; ++i) {
    long long k = 2 + (l[i + 1] - l[i] - 1 >= 4 ? 2 : 0);
    cout << second.substr(end, l[i] + k - end) << "\n";
    end = l[i] + k;
  }
  cout << second.substr(end);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  srand(time(NULL));
  int T = 1, t = 1;
  while (T--) {
    solve();
    cout << "\n";
  }
  return 0;
}
template <typename T>
void dispv(vector<T> v) {
  for (auto d : v) cout << d << " ";
  cout << "\n";
}
long long log2(long long x) { return 64 - __builtin_clzl(x) - 1; }
