//check check check
#include<iostream>
#include<vector>
#include<algorithm>
#include<fstream>
#include<queue>
#include<cstring>
#include<map>
#include<iomanip>
#include<set>
#define ll long long
#define pb(x) push_back(x)
using namespace std;
typedef pair<int,int> ii;
const int NMAX = 0;
const int MOD = 9901;
ifstream fin("sumdiv.in");
ofstream fout("sumdiv.out");
int pow2(int n,int e)
{
int p = 1;
while(e)
{
if(e&1)
p = (p*n)%MOD;
n = (n*n)%MOD;
e>>=1;
}
return p;
}
int main()
{
int N,i,j,A,B;
fin>>A>>B;
int rez = 1;
for(i = 2 ; i*i <= A ; ++i)
{
if(A%i == 0)
{
//i e un numar prim care il divide pe A
int cnt = 0;
while(A%i == 0)
{
cnt++;
A/=i;
}
int aux = ( ( (pow2(i%MOD , B*cnt + 1 ) - 1 + MOD)%MOD )* pow2((i-1+MOD)%MOD , MOD - 2) ) % MOD;
rez = (rez * aux) % MOD;
}
}
if(A > 1)
{
if(A % MOD != 1)
{
int aux = ( ( (pow2(A , B + 1) - 1 )%MOD )*pow2(A-1 , MOD - 2) ) %MOD;
rez = (rez*aux)%MOD;
}
else
rez = (rez * ( ( B + 1 ) % MOD ) ) %MOD;
}
fout<<rez;
return 0;
}