typedef long long LL;
LL qpow(LL a, LL times, LL mod)
{
LL res = 1; LL tmp = a;
while (times)
{
if (times & 1) res = res * tmp % mod;
tmp = tmp * tmp % mod;
times >>= 1;
}
return res;
}
LL F(LL n, LL m, LL mod)
{
LL a = 1, b = 1;
if (m > n) return 0;
while (m)
{
a = a * n % mod; b = b * m % mod;
m--; n--;
}
return (a * qpow(b, mod - 2, mod) % mod);
}
LL LU(LL n, LL m, LL mod)
{
if (m == 0) return 1;
return (F(n % mod, m % mod, mod) * LU(n / mod, m / mod, mod)) % mod;
}