http://icpc.upc.edu.cn/problem.php?cid=1463&pid=42
#include<cstdio>
#include<iostream>
#define p 2333
#define ll long long
using namespace std;
ll c[p+10][p+10],s[p+10][p+10],i,j,t,n,k;
ll lucas(ll n,ll k)
{
return k!=0ll?c[n%p][k%p]*lucas(n/p,k/p)%p:1ll;
}
ll ans(ll n,ll k)
{
return k<0ll?0ll:(s[n%p][p-1]*ans(n/p,k/p-1)%p+lucas(n/p,k/p)*s[n%p][k%p]%p)%p;
}
int main()
{
c[0][0]=1ll;
for(i=1; i<=p; i++)
{
c[i][0]=c[i][i]=1ll;
for(j=1; j<i; j++)
c[i][j]=(c[i-1][j-1]+c[i-1][j])%p;
}
for(i=0; i<=p; i++)
{
s[i][0]=1ll;
for(j=1; j<=p; j++)
s[i][j]=(s[i][j-1]+c[i][j])%p;
}
scanf("%lld",&t);
while(t--)
{
scanf("%lld%lld",&n,&k);
printf("%lld\n",ans(n,k));
}
}