#include <iostream>
#include <cstdio>
using namespace std;
const int MOD = 3761599;
const int MAXN = 1100010;
int e[MAXN], f[MAXN], temp[MAXN];
void init()
{
long long t = 1;
for (int i = 1; i < MAXN; i++)
{
t *= i;
t = t % MOD;
temp[i] = t;
}
temp[0] = 1;
}
int gcd(int a, int b)
{
if (b == 0) return a;
return gcd(b, a % b);
}
void e_gcd(int a, int b, int &x, int &y)
{
if (!b)
{
x = 1, y = 0;
}
else
{
e_gcd(b, a % b, x, y);
int l = x; x = y; y = l - a / b * y;
}
}
int choose(int n, int m)
{
if (m > n) return 0;
else if(n == m) return 1;
long long nn = temp[n], mm = (temp[m] *temp[n - m]) % MOD;
int d = gcd(nn, mm);
nn /= d;
mm /= d;
int x, y;
e_gcd(mm, MOD, x, y);
x = (x + MOD) % MOD;
return (x * nn) % MOD;
}
int cal(int n, int m)
{
int i = 0;
while (n > 0)
{
e[i++] = n % MOD;
n = n / MOD;
}
int len = i;
i = 0;
while (m > 0)
{
f[i++] = m % MOD;
m = m / MOD;
}
long long re = 1;
for (int i = 0; i < len; i++)
re = (re * choose(e[i], f[i])) % MOD;
return (int) re;
}
int main()
{
int n,m;
init();
while (cin>>n>>m) cout<<cal(n,m)<<endl;
return 0;
}