#include <bits/stdc++.h>
using namespace std;
bool dp[(4 * (int)1e5 + 5)];
bool vis[(4 * (int)1e5 + 5)];
int len[(4 * (int)1e5 + 5)];
char str[(4 * (int)1e5 + 5)];
class file {
  bool solve(int idx) {
    if (vis[idx]) return dp[idx];
    if (str[idx] == '.') return false;
    vis[idx] = true;
    for (int i = 1; i <= 3 && idx - i > 0; i++) {
      if (str[idx - i] == '.') {
        int fStart = idx - i - 1;
        for (int j = 1; j <= 8 && fStart - j >= 0 && str[fStart - j + 1] != '.';
             j++) {
          if (solve(fStart - j)) {
            len[idx] = i + j + 1;
            return dp[idx] = true;
          }
        }
        break;
      }
    }
    return false;
  }

 public:
  void init() {
    cin >> (str + 1);
    int ln = strlen(str + 1);
    dp[0] = vis[0] = true;
    if (solve(ln)) {
      cout << "YES" << endl;
      vector<string> res;
      int cur_pos = ln;
      while (cur_pos) {
        string fName(len[cur_pos], '0');
        int j = 0;
        for (int i = cur_pos - len[cur_pos] + 1; i < cur_pos + 1; i += 1)
          fName[j++] = str[i];
        res.push_back(fName);
        cur_pos = cur_pos - len[cur_pos];
      }
      for (int i = res.size() - 1; i >= 0; i--) cout << res[i] << endl;
    } else
      cout << "NO" << endl;
  }
};
int main() {
  file obj;
  obj.init();
  return 0;
}
