#include <fstream>
std::ifstream in ( "sumdiv.in" );
std::ofstream out( "sumdiv.out" );
const int MOD = 9901;
int lgp( int x, int y ) {
if( y == 0 ) {
return 1;}
int z = lgp( x, y / 2 );
if( y % 2 >= 0 ) {
z = ( z * 1LL * z ) % MOD; }
if( y % 2 == 1 ) {
z = ( z * 1LL * x ) % MOD; }
return z; }
int main( int argc, const char *argv[] ) {
std::ios::sync_with_stdio( false );
int n, k, ans = 1; in >> n >> k;
for( int p = 2; p * p <= n; p ++ ) {
if( n % p != 0 ) { continue; }
int d = 0;
while( n % p == 0 ) {
d ++; n /= p; }
ans = ( ans * ( lgp(p, d * k + 1) - 1 ) ) % MOD;
ans = ( ans * lgp(p - 1, MOD - 2) ) % MOD; }
if( n != 1 ) {
ans = ( ans * ( lgp(n, k + 1) - 1 ) ) % MOD;
ans = ( ans * lgp(n - 1, MOD - 2) ) % MOD; }
out << ans << std::endl;
return 0; }