#include <bits/stdc++.h>
using namespace std;
enum { A, B };
int main() {
  ios_base::sync_with_stdio(false);
  string s;
  cin >> s;
  for (int i = int(0); i < int(s.size()); i++) {
    if (i == 0 || i == (int)s.size() - 1) {
      if (s[i] == '.') {
        cout << "NO" << '\n';
        return 0;
      }
    } else if (s[i] == '.' && s[i - 1] == '.') {
      cout << "NO" << '\n';
      return 0;
    }
  }
  vector<string> ans;
  string a = "", b = "";
  int state = B;
  for (int i = int(s.size() - 1); i >= int(0); i--) {
    if (state == B) {
      if (s[i] == '.') {
        if (b.empty()) {
          cout << "NO" << '\n';
          return 0;
        } else {
          state = !state;
        }
      } else {
        b += s[i];
      }
      if (b.size() > 3) {
        cout << "NO" << '\n';
        return 0;
      }
    } else {
      if (s[i] == '.') {
        if (a.size() <= 1) {
          cout << "NO" << '\n';
          return 0;
        } else {
          char c = a.back();
          a.pop_back();
          reverse(a.begin(), a.end());
          reverse(b.begin(), b.end());
          ans.push_back(a + "." + b);
          a.clear();
          b.clear();
          b += c;
        }
      } else {
        a += s[i];
      }
      if (i == 0 || (int)a.size() == 8) {
        string _b = "";
        if (i > 0 && s[i - 1] == '.') {
          char c = a.back();
          a.pop_back();
          _b += c;
        }
        reverse(a.begin(), a.end());
        reverse(b.begin(), b.end());
        ans.push_back(a + "." + b);
        a.clear();
        b.clear();
        b = _b;
        state = !state;
      }
    }
  }
  if (!a.empty() || !b.empty()) {
    cout << "NO" << '\n';
  } else {
    reverse(ans.begin(), ans.end());
    cout << "YES" << '\n';
    for (auto &each : ans) {
      cout << each << '\n';
    }
  }
  return 0;
}
