#include<bits/stdc++.h>
using namespace std;
__int128 a,b,sum,mod=998244353,inv=499122177;
__int128 ans;
inline __int128 read()
{
__int128 w=0;
int f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
}
while(ch<='9'&&ch>='0')
{
w=w*10+ch-'0';
ch=getchar();
}
return f*w;
}
void print(__int128 x)
{
if(x<0)
cout<<"-";
if(x>9)print(x/10);
putchar(x%10+'0');
}
vector<__int128>v,t;
int main()
{
a=read();
b=read();
ans=b%mod;
if(b==0)
{
cout<<0;
return 0;
}
__int128 k=a;
for(__int128 i=2;i*i<=a;i++)
{
if(k%i==0)
{
v.push_back(i);
t.push_back(0);
sum++;
while(k%i==0)
{
k/=i;
t[sum-1]++;
}
}
}
if(k>1)
{
sum++;
v.push_back(k);
t.push_back(1);
}
for(__int128 i=0;i<sum;i++)
{
ans*=(t[i]*b+1);
ans%=mod;
}
ans*=inv;
ans%=mod;
print(ans);
return 0;
}
AC 46个点,WA 21个