func_code_string: #include <bits/stdc++.h>   using namespace std;   using ll = long long;   using ld = long double;   using ull = unsigned long long;   const double PI = acos(-1.0);   const int EPS = (1e-10);   const int N = 1e5 * 2 + 10;   const int inf = 1e9 * 2 + 10;   const ll INF = 1e18 * 2 + 10;   const int MOD = 1e9 + 7;   int nxt() {     int x;     cin >> x;     return x;   }   int fcmp(double a, double b) {     return (fabs(a - b) < EPS ? 0 : a > b ? 1 : -1);   }   bool prime[N];   vector<int> adj[N];   int sz[N], link[N];   void sieve() {     fill(&prime[0], &prime[0] + N, 1);     prime[0] = 0;     prime[1] = 1;     for (int i = 2; i * i <= N; ++i)       if (prime[i]) {         for (int j = i * i; j < N; j += i) prime[j] = 0;       }   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(nullptr);     sieve();     string s;     cin >> s;     map<char, int> mp;     for (int i = (0); i <= ((int)(s).size() - 1); ++i) mp[s[i]]++;     s =  0  + s;     char k = 0;     for (int i = (0); i <= (256); ++i)       if (mp[k] < mp[i]) k = i;     prime[1] = 1;     for (int i = 2; i + i <= (int)(s).size() - 1; ++i) prime[i] = 0;     for (int i = (1); i <= ((int)(s).size() - 1); ++i)       if (!prime[i]) {         if (mp[k] == 0) {           cout <<  NO n ;           return 0;         }         mp[s[i] = k]--;       }     for (int i = (1); i <= ((int)(s).size() - 1); ++i)       if (prime[i]) {         bool ok = false;         for (int j = (0); j <= (256); ++j)           if (mp[j] > 0) {             mp[s[i] = j]--;             ok = true;             break;           }         if (ok)           continue;         else {           cout <<  NO n ;           return 0;         }       }     s.erase(0, 1);     cout <<  YES n  << s;     return 0;   }   