10
4 108 114
5 30 155
8 193 197
9 71 169
2 163 166
8 120 144
8 22 151
4 21 166
2 46 127
8 38 51
 20
9 142 172
7 132 256
8 245 315
9 496 496
3 345 362
8 13 162
5 342 470
9 16 488
9 467 482
4 471 478
10 92 224
6 228 261
9 54 167
2 402 409
5 9 10
7 225 360
3 438 483
6 252 342
3 491 493
6 296 367
 1
8 1234567890123 123456789012345

0
3
0
1
3
0
5
16
9
1
 0
0
0
0
4
6
13
7
0
0
1
2
3
0
0
2
12
9
1
4
 774752389568

using namespace std;
#include<bits/stdc++.h>
#define ll int64_t
#define pii pair <int,int>
#define pll pair <ll,ll>
#define mp make_pair
#define pb push_back
#define fir first
#define sec second
#define sz(c) ((c).size())
#define all(c) (c).begin(),(c).end()
#define fn "test"   ///____FILE_NAME_HERE_____
#define MASK(i) ((1LL)<<(i))
#define BIT(x,i) (((x)>>(i))&1)
#define rep(c,it) for(__typeof((c).begin()) it=(c).begin();it!=(c).end();it++)
#define rrep(c,it) for(__typeof((c).rbegin()) it=(c).rbegin();it!=(c).rend();it++)

template <class T,class U> void maximize(T &x,U y)
{
    if(x < y)x=y;
}
template <class T,class U> void minimize(T &x,U y)
{
    if(x > y)x=y;
}
template <class T> T Abs(T x)
{
    return (x < (T)0 ? -x : x);
}
template <class T> T safe_sqrt(T x)
{
    return sqrt(max((T)0,x));
}
template <class T,class U,class V> T addmod(T x,U k,V mod)
{
    return ((x + k)%mod + mod) % mod;
}
template <class T,class U,class V> T submod(T x,U k,V mod)
{
    return ((x - k)%mod + mod) % mod;
}
template <class T,class U,class V> T mulmod(T x,U k,V mod)
{
    return (ll)x*k%mod;
}

/*------------------------------------------END_OF_TEMPLATE------------------------------------------*/

namespace task{

ll dp[11][20][2000];
int b;
ll l,r;
vector <int> digits;

vector<int> trans(ll x,int b)
{
    vector <int> vec;
    while(x > 0)vec.pb(x % b),x/=b;
    return vec;
}

ll calc(int base,int idx,int mask,bool flag)
{
    if(idx==-1)return (mask==0);
    if(~dp[base][idx][mask] and flag)return dp[base][idx][mask];
    ll ret=0;
    int k=flag ? b-1 : digits[idx];
    for(int i=0;i<=k;++i)
        ret+=calc(base,idx-1,mask^MASK(i),flag|(i < k));
    if(flag)dp[base][idx][mask]=ret;
    return ret;
}

ll f(ll x)
{
    if(!x)return 0ll;
    digits.clear();
    digits=trans(x,b);
    ll ret=0;
    for(int i=0;i<sz(digits);++i)
    {
        int up=(i==sz(digits)-1 ? digits[i] : b-1);
        ///now i-idx we choose its value call j.
        for(int j=1;j<=up;++j)
            ret+=calc(b,i-1,MASK(j),(i < sz(digits)-1 or j < up));
    }
    return ret;
}

void solve()
{
    int q;
    scanf("%d",&q);
    memset(dp,-1,sizeof(dp));
    while(q--)
    {
        scanf("%d%I64d%I64d",&b,&l,&r);
        ll ans=f(r) - f(l-1);
        printf("%I64d\n",ans);
    }
}}

int main(void)
{
    #ifndef ONLINE_JUDGE
    freopen(fn".inp","r",stdin);
    freopen(fn".out","w",stdout);
    #endif // ONLINE_JUDGE
    task::solve();
}
