#include #define FOR(i, a, b) for (int i = (a); i < (b); i++) #define RFOR(i, a, b) for (int i = (b)-1; i >= (a); i--) #define rep(i, n) for (int i = 0; i < (n); i++) #define rep1(i, n) for (int i = 1; i <= (n); i++) #define rrep(i, n) for (int i = (n)-1; i >= 0; i--) #define pb push_back #define mp make_pair #define fst first #define snd second #define show(x) cout << #x << " = " << x << endl #define chmin(x, y) x = min(x, y) #define chmax(x, y) x = max(x, y) #define pii pair #define vi vector using namespace std; template ostream& operator<<(ostream& o, const pair& p) { return o << "(" << p.first << "," << p.second << ")"; } template ostream& operator<<(ostream& o, const vector& vc) { o << "sz = " << vc.size() << endl << "["; for (const T& v : vc) o << v << ","; o << "]"; return o; } using ll = long long; constexpr ll MOD = 1000000007; constexpr int MAX = 10001; int digits[MAX]; int num[10]; int mod3[3]; inline int convert(const char c) { return c - '0'; } int main() { string str; cin >> str; const int n = str.size(); int sum = 0; rep(i, n) { digits[i] = convert(str[i]); sum += convert(str[i]); mod3[convert(str[i]) % 3]++; num[convert(str[i])]++; } sort(digits, digits + n); if (digits[0] == digits[n - 1]) { rep(i, n) { cout << digits[i]; } cout << endl; return 0; } int prime = 1; while (num[1] == 0 and num[3] == 0 and num[5] == 0 and num[7] == 0 and num[9] == 0) { num[1] = num[2]; num[2] = num[4]; num[3] = num[6]; num[4] = num[8]; prime *= 2; } while (num[1] == 0 and num[2] == 0 and num[3] == 0 and num[4] == 0 and num[6] == 0 and num[7] == 0 and num[8] == 0 and num[9] == 0) { num[1] = num[5]; prime *= 5; } if (max({num[1], num[2], num[3], num[4], num[5], num[6], num[7], num[8]}) == 0) { if (num[9] % 3 == 0) { prime *= 81; } else { if (sum % 3 == 0) { prime *= 3; if (sum % 9 == 0) { prime *= 3; } } } } else if (max(mod3[0], mod3[1]) == 0 or max(mod3[1], mod3[2]) == 0 or max(mod3[0], mod3[2]) == 0) { int i = 0; rep(j, n) { if (j % 3 == 0) { i = (i + digits[j]) % 27; } else if (j % 3 == 1) { i = (i + 10 * digits[j]) % 27; } else { i = (i + 19 * digits[j]) % 27; } } if (i % 27 == 0) { prime *= 27; } else { if (sum % 3 == 0) { prime *= 3; if (sum % 9 == 0) { prime *= 3; } } } } else { if (sum % 3 == 0) { prime *= 3; if (sum % 9 == 0) { prime *= 3; } } } if (num[1] == 0 and num[2] == 0 and num[3] == 0 and num[4] == 0 and num[5] == 0 and num[6] == 0 and num[8] == 0 and num[9] == 0) { if (n % 6 == 0) { prime *= 7; } } else if (num[0] == 0 and num[2] == 0 and num[3] == 0 and num[4] == 0 and num[5] == 0 and num[6] == 0 and num[7] == 0 and num[9] == 0) { if (n % 6 == 0) { prime *= 7; } } else if (num[0] == 0 and num[1] == 0 and num[3] == 0 and num[4] == 0 and num[5] == 0 and num[6] == 0 and num[7] == 0 and num[8] == 0) { if (n % 6 == 0) { prime *= 7; } } cout << prime << endl; return 0; }