#include <bits/stdc++.h>   using namespace std;   const int inf = 0x3f3f3f3f;   int isprime[1010];   int mp[256];   int main() {     isprime[0] = isprime[1] = 1;     for (int i = 2; i <= 1000; i++)       if (!isprime[i])         for (int j = i * 2; j <= 1000; j += i) isprime[j] = 1;     char s[1100], str[1010];     scanf( %s , s);     int l = strlen(s);     for (int i = 0; i < l; i++) {       mp[s[i]]++;       str[i] = 0;     }     str[l] = 0;     int flag = 0;     for (int i = 1; i <= l; i++) {       if (isprime[i]) continue;       int tmp = 0;       for (int j = 1; j <= l; j++) {         if (j % i == 0 && str[j]) {           tmp = str[j];           break;         }       }       if (tmp) {         int k = 1;         while (k * i <= l) {           if (str[k * i] == 0) {             mp[tmp]--;             if (mp[tmp] < 0) {               flag = 1;               break;             }           }           str[k * i] = tmp;           k++;         }       } else {         int p = max_element(mp, mp + 256) - mp;         int k = 1;         while (k * i <= l) {           if (str[k * i] == 0) {             mp[p]--;             if (mp[p] < 0) {               flag = 1;               break;             }           }           str[k * i] = p;           k++;         }       }       if (flag) break;     }     if (flag)       printf( NO n );     else {       printf( YES n );       for (int i = 1; i <= l; i++) {         if (!str[i]) {           int j =  a ;           while (mp[j] == 0) {             j++;           }           str[i] = j;           mp[j]--;         }       }       for (int i = 1; i <= l; i++) printf( %c , str[i]);       printf(  n );     }     return 0;   }   