#include #include #include using namespace std; using namespace __gnu_pbds; template using ordered_set = tree, rb_tree_tag, tree_order_statistics_node_update>; #define io ios::sync_with_stdio(false); cin.tie(0); #define int long long int #define ld long double #define vi vector #define pii pair #define PB push_back #define F first #define S second #define MP make_pair #define all(v) v.begin(), v.end() #define forn(a, n) for(int i = a ; i < n ; i++) #define yesno(b) cout << ((b)? "Yes" : "No") #define nl cout << "\n" #define print(v,a) for(auto _ : v) cout << _ << a; #define MOD 998244353ll #define MOD2 1000000007ll #define FL(i, a, n) for(int i = a ; i < n ; i++) #define FR(i, a, n) for(int i = a ; i >= n ; i--) const int inf = 1e17 + 1; bool isPrime(int n) { if(n < 2) return false; for(int i = 2 ; i * i <= n ; i++) { if(n % i == 0) return false; } return true; } void solve(){ int n; cin >> n; if(n < 5 || isPrime(n)) { yesno(1); return ; } set s; for(int i = 2 ; i <= min(10000000ll, n) ; i++) { while(n % i == 0) { s.insert(i); n /= i; } } yesno((int)s.size() <= 2); } signed main(){ io; // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); int t = 1; // cin >> t; // auto st = chrono::high_resolution_clock::now(); forn(1, t + 1){ // cout << "Case #" << i << ": "; solve(); nl; } // cerr << "Time: " << (ld)(chrono::duration_cast(chrono::high_resolution_clock::now() - st).count()) / 1000.0 << "s"; return 0; }