#include /* * @autor:SEU-Yuan * @email:yuanyanghao2022@163.com * @date: 2024-07-25 23:30:36 */ #define pcc pair #define pii pair #define vi vector #define vl vector #define rep(i, x, y) for (int i = x; i < y; i++) #define per(i, x, y) for (int i = x; i >= y; i--) #define rep0(i, n) for (int i = 0; i < (n); i++) #define per0(i, n) for (int i = (n) - 1; i >= 0; i--) #define mp make_pair #define pb push_back #define F first #define S second #define sz(x) (x).size() #define all(x) (x).begin(), (x).end() #define ll long long #define ull unsigned long long #define db double #define ld long double using namespace std; inline ll read() { ll x = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') { x = x * 10 + ch - '0'; ch = getchar(); } return x * f; } const double eps = 1e-9; const int inf = 0x3f3f3f3f; const int mod = 1e9 + 7; const int maxn = 2e5 + 10; const int MAX = 1e5; const double pi = acos(-1.0); const ll INF = 0x3f3f3f3f3f3f3f; ll qpow(ll a, ll b) { ll res = 1; while (b) { if (b & 1) res = (res * a) % mod; a = (a * a) % mod; b >>= 1; } return res % mod; } /***************main****************/ ll T = 1; ll m, n; int main() { n = read(); ll ans = 1; unordered_map ma; for (ll i = 2; i <= n; i++) { if (n % i == 0) { while (n % i == 0) { n /= i; ma[i]++; } } } for (auto &[x, y] : ma) { ll res = 1, t = 1; for (int i = 0; i < y; i++) { t *= x; res += t; } ans *= res; } if (ans == (n << 1)) cout << "Yes\n"; else cout << "No\n"; return 0; }