#include using namespace std; #include using namespace atcoder; using ll = int64_t; using ul = uint64_t; using vi = vector; using vd = vector; using vc = vector; using vs = vector; using vb = vector; using vl = vector; using vul = vector
    ; using pii = pair; using pll = pair; using sei = set; using sec = set; using sel = set; using mii = map; using vvi = vector; using vvd = vector; using vvc = vector; using vvb = vector; using vvl = vector; using mint = modint998244353; int main() { string T; cin >> T; int size = T.size(); if (size == 1) { cout << "Yes" << endl; if (T == ".") cout << "S" << endl; else cout << T << endl; return 0; } vector> dp(size); string skg = "SKG"; string result; char end; for (int i = 0; i < size - 1; i++) { for (int j = 0; j < 3; j++) { if (!(T[i] == skg[j] || T[i] == '.')) continue; for (int k = 0; k < 3; k++) { if (!(T[i + 1] == skg[k] || T[i + 1] == '.')) continue; string now; now += skg[j], now += skg[k]; if (i == 0) { dp[i].insert(now); end = now[1]; continue; } for (int l = 0; l < 3; l++) { if (!(T[i - 1] == skg[l] || T[i - 1] == '.')) continue; string bef; bef += skg[l], bef += skg[j]; if (now != "KG" && dp[i - 1].count(bef)) { dp[i].insert(now); end = now[1]; } else if (now == "KG" && (dp[i - 1].count("KK") || dp[i - 1].count("GK"))) { dp[i].insert(now); end = now[1]; } } } } if (dp[i].size() == 0) { cout << "No" << endl; return 0; } } char cur = end; result.push_back(cur); for (int i = size - 2; i >= 0; i--) { for (int j = 0; j < 3; j++) { string bef; bef += skg[j], bef += cur; if (dp[i].count(bef)) { cur = skg[j]; result += cur; break; } } } reverse(result.begin(), result.end()); cout << "Yes" << endl; cout << result << endl; }