#include #include using namespace std; using ll = long long; using ull = unsigned long long; template using max_heap = priority_queue; template using min_heap = priority_queue, greater<>>; ll ll_min = numeric_limits::min(); ll ll_max = numeric_limits::max(); ll ALPHABET_N = 26; static const ll INF = ll_max / 10; #define rep(i, n) for (ll i = (ll)0; i < (ll)n; i++) #define rep_(i, k, n) for (ll i = (ll)k; i < (ll)n; i++) #define all(a) a.begin(), a.end() using namespace atcoder; int main() { ios::sync_with_stdio(false); cin.tie(0); ll n, m; cin >> n >> m; vector vec; modint::set_mod(n); rep(i, n) { vec.push_back(modint(i + 1).pow(m).val()); } sort(all(vec)); vec.erase(unique(all(vec)), vec.end()); cout << (vec.size() == n ? "Yes" : "No") << endl; return 0; }