$N = a^b$
$\therefore result = \varphi(N) = N * (1 - \frac{1}{p_1}) *……*(1 - \frac{1}{p_k})$
$\therefore result\mod p = \varphi(N) \mod p = a^{b - 1}\mod p * \varphi(a) \mod p$
#include <iostream>
using namespace std ;
using i64 = long long ;
const int p = 998244353 ;
int qpow(i64 a,i64 b) {
int ret = 1 % p; ;
while ( b ) {
if ( b & 1 ) ret = (__int128) ret * a % p ;
a = (__int128) a * a % p ;
b >>= 1 ;
}
return ret ;
}
int phi(int n) {
int ret = n ;
for(int i = 2 ; i <= n / i ; i++)
{
if ( n % i == 0 ) {
ret = ret - ret / i ;
while ( n % i == 0 ) n /= i ;
}
}
if ( n > 1 ) ret = ret - ret / n ;
return ret ;
}
int main(){
i64 a , b ;
cin >> a >> b ;
if ( a == 1 ) cout << 0 ;
else cout << (i64)qpow(a , b - 1) * phi(a) % p ;
return 0 ;
}