#include using namespace std; const int maxc = 50000; char check[maxc + 1]; vector prime; void sieve() { for (int i = 0; i < maxc; i++) check[i] = 1; check[0] = 0; check[1] = 0; for (int i = 2; i * i < maxc; i++) if (check[i]) for (int j = i * i; j < maxc; j += i) check[j] = 0; for (int i = 2; i < maxc; i++) { if (check[i]) prime.push_back(i); } } int is_db(int n) { int m = n; vector factor; for (int i = 0; i < prime.size() && prime[i]*prime[i]<=n;i++) { while (n % prime[i] == 0) { factor.push_back(prime[i]); n /= prime[i]; } } factor.push_back(n); int facsum = 0; for (auto i : factor) { while (i) { facsum += i % 10; i /= 10; } } int sum = 0; while (m) { sum += m % 10; m /= 10; } if (sum == facsum) { return 1; } return 0; } int main() { int n; cin >> n; n++; sieve(); while (!is_db(n)) { n++; } cout << n << "\n"; }