// 嘘解法チェックその2 #include using namespace std; using ll = long long; #define CIN( LL , A ) LL A; cin >> A #define FOR( VAR , INITIAL , FINAL_PLUS_ONE ) for( ll VAR = INITIAL ; VAR < FINAL_PLUS_ONE ; VAR ++ ) #define RETURN( ANSWER ) cout << ( ANSWER ) << "\n"; return 0 constexpr const ll P = 998244353; int main(){ CIN( ll , N ); N %= P - 1; if( N == 0 ){ RETURN( 1 ); } ll pf[30]; ll num = 0; ll p = 2; if( N % p == 0 ){ pf[num] = p; num++; N /= p; while( N % p == 0 ){ pf[num] = p; num++; N /= p; } } p++; while( N != 1 ){ if( N % p == 0 ){ pf[num] = p; num++; N /= p; while( N % p == 0 ){ pf[num] = p; num++; N /= p; } } p += 2; } ll answer = 3; FOR( i , 0 , num ){ ll& pfi = pf[i]; ll power = 1; FOR( j , 0 , pfi ){ power = ( power * answer ) % P; } answer = power; } RETURN( answer ); }