#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using Graph = vector>; #define rep(i,x) for(ll i=0;i<(ll)(x);i++) #define rrep(i,x) for(ll i=1;i<=(ll)(x);i++) #define all(v) v.begin(),v.end() typedef pair pii; ll mod998 = 998244353; ll mod109 = 1e9 + 7; //vector> a(n,vector(n)); long long pow(long long a, long long n, long long m) { long long ret = 1; for (; n > 0; n >>= 1, a = a * a % m) { if (n % 2 == 1) { ret = ret * a % m; } } return ret; } int main(){ ll n,p; cin >> n >> p; ll now = p; ll cnt = 0; while (n >= now) { cnt += n / now; now *= p; } cout << pow(p, cnt, mod998) << endl; }