#include <bits/stdc++.h>
using namespace std;
long long int gcd(long long int a, long long int b) {
  if (a == 0) {
    return b;
  }
  return gcd(b % a, a);
}
long long int mulmod(long long int a, long long int b, long long int m) {
  long long int x = 0, y = a;
  while (b > 0) {
    if (b & 1) {
      x = (x + y) % m;
    }
    y = (y + y) % m;
    b >>= 1;
  }
  return x;
}
long long int mod(long long int x, long long int n, long long int M) {
  long long int result = 1;
  while (n > 0) {
    if (n % 2 == 1) result = mulmod(result, x, M);
    x = mulmod(x, x, M);
    n = n / 2;
  }
  return result;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  string s;
  cin >> s;
  long long int l = s.length();
  vector<long long int> v, v1;
  long long int cnt = 0;
  for (long long int i = 0; i < l; i++) {
    if (s[i] == '.') {
      v.push_back(cnt);
      v1.push_back(cnt);
      cnt = 0;
      continue;
    }
    cnt++;
  }
  v.push_back(cnt);
  v1.push_back(cnt);
  if (cnt == l) {
    cout << "NO"
         << "\n";
    return 0;
  }
  if (l < 3) {
    cout << "NO"
         << "\n";
    return 0;
  }
  if (v[0] > 8 || v[0] < 1) {
    cout << "NO"
         << "\n";
    return 0;
  }
  if (v[v.size() - 1] > 3 || v[v.size() - 1] < 1) {
    cout << "NO"
         << "\n";
    return 0;
  }
  sort(v1.begin(), v1.end());
  if (v1[v1.size() - 1] > 11) {
    cout << "NO"
         << "\n";
    return 0;
  }
  if (v1[0] == 0) {
    cout << "NO"
         << "\n";
    return 0;
  }
  for (long long int i = 1; i < v.size() - 1; i++) {
    if (v[i] < 2) {
      cout << "NO"
           << "\n";
      return 0;
    }
  }
  vector<long long int> v2;
  v2.push_back(v[0]);
  for (long long int i = 1; i < v.size() - 1; i++) {
    long long int x = v[i];
    if (x > 3) {
      v2.push_back(3);
      v2.push_back(x - 3);
    } else {
      v2.push_back(1);
      v2.push_back(x - 1);
    }
  }
  v2.push_back(v[v.size() - 1]);
  cout << "YES"
       << "\n";
  long long int ind = 0, k = 0;
  for (long long int i = 0; i < v2.size() / 2; i++) {
    for (long long int j = ind; j < ind + v2[k]; j++) {
      cout << s[j];
    }
    cout << ".";
    ind += v2[k];
    k++;
    for (long long int j = ind + 1; j < ind + v2[k] + 1; j++) {
      cout << s[j];
    }
    ind += v2[k] + 1;
    k++;
    cout << "\n";
  }
  return 0;
}
