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

import java.util.*;

public class slither {
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		int t=scan.nextInt();
		for(int tt=0;tt<t;tt++) {
			b=scan.nextInt();
			long x=scan.nextLong(), y=scan.nextLong();
			l=conv(x);
			r=conv(y);
			long l1=init(r), l2=init(l);
			System.out.println(l1-l2);
		}
	}
	public static String conv(long x) {
		StringBuilder res=new StringBuilder();
		boolean good=false;
		for(int i=18;i>=0;i--) {
			if(x>=Math.pow(b,i)||good) {
				int rem=(int)(x/Math.pow(b,i));
				res.append(rem);
				x-=rem*Math.pow(b,i);
				good=true;
			}
		}
		return res.toString();
	}
	static int b;
	public static long go(String r, int at, int lower, int start, int mask) {
		if(at==dp.length) {
			return mask==0?1L:0L;
		}
		if(dp[at][lower][start][mask]!=-1) return dp[at][lower][start][mask];
		
		long res=0L;
		int end=b-1;
		if(lower==0) end=(int)(r.charAt(at)-'0');
		for(int i=0;i<=end;i++) {
			int nstart=start;
			if(i>0) nstart=1;
			
			int nlower=lower;
			if(i<end) nlower=1;
			
			int nmask=mask;
			if(nstart==1) nmask^=(1<<i);
			
			res+=go(r,at+1,nlower,nstart,nmask);
		}
		return dp[at][lower][start][mask]=res;
	}
	static long[][][][] dp;
	public static long init(String r) {
		dp=new long[r.length()][2][2][1<<b];
		for(long[][][] d:dp) for(long[][] dd:d) for(long[] ddd:dd) Arrays.fill(ddd,-1);
		return go(r,0,0,0,0);
	}
	static String l,r;
}