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

#include<set>  
#include<map>     
#include<stack>            
#include<queue>            
#include<vector>    
#include<string> 
#include<time.h>
#include<math.h>            
#include<stdio.h>            
#include<iostream>            
#include<string.h>            
#include<stdlib.h>    
#include<algorithm>   
#include<functional>    
using namespace std;            
#define ll __int64       
#define inf 1000000000       
#define mod 1000000007             
#define maxn  100005
#define lowbit(x) (x&-x)            
#define eps 1e-9
int b[maxn],digit[30],base;
ll l[maxn],r[maxn],dp[64][1<<12],ans[maxn];
ll dfs(int cnt,int mask,int limit,int head)
{
	if(!limit && !head && dp[cnt][mask]!=-1)
		return dp[cnt][mask];
	if(cnt==0)
		return (mask==0) && (!head);
	ll i,res=0;
	if(limit)
	{
		if(head)
		{
			for(i=1;i<digit[cnt];i++)
				res+=dfs(cnt-1,mask^(1<<i),0,0);
			res+=dfs(cnt-1,mask^(1<<digit[cnt]),1,0);
			res+=dfs(cnt-1,mask,0,1);
		}
		else
		{
			for(i=0;i<digit[cnt];i++)
				res+=dfs(cnt-1,mask^(1<<i),0,0);
			res+=dfs(cnt-1,mask^(1<<digit[cnt]),1,0);
		}
	}
	else
	{
		if(head)
		{
			for(i=1;i<base;i++)
				res+=dfs(cnt-1,mask^(1<<i),0,0);
			res+=dfs(cnt-1,mask,0,1);
		}
		else
		{
			for(i=0;i<base;i++)
				res+=dfs(cnt-1,mask^(1<<i),0,0);
		}
	}
	if(!limit && !head)
		dp[cnt][mask]=res;
	return res;
}
ll work(ll x)
{
	if(x<=0)
		return 0;
	int len=0;
	while(x)
	{
		digit[++len]=x%base;
		x/=base;
	}
	return dfs(len,0,1,1);
}
int main(void)
{
	int q,i,j,k;
	scanf("%d",&q);
	for(i=1;i<=q;i++)
		scanf("%d%I64d%I64d",&b[i],&l[i],&r[i]);
	for(i=2;i<=10;i++)
	{
		base=i;
		for(j=0;j<64;j++)
			for(k=0;k<(1<<i);k++)
				dp[j][k]=-1;
		for(j=1;j<=q;j++)
		{
			if(b[j]!=i)
				continue;
			ans[j]=work(r[j])-work(l[j]-1);
		}
	}
	for(i=1;i<=q;i++)
		printf("%I64d\n",ans[i]);
	return 0;
}