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.io.*;
import java.util.*;

public class slither {
	public static void main(String[] args) {
		FastScanner scan=new FastScanner();
		PrintWriter out=new PrintWriter(System.out);
		int t=scan.nextInt();
		for(int tt=0;tt<t;tt++) {
			b=scan.nextInt();
			long x=scan.nextLong(), y=scan.nextLong();
			
			l=Long.toString(x-1,b);
			r=Long.toString(y,b);
			
			dp=new long[63][2][2][1<<b];
			for(long[][][] d:dp) for(long[][] dd:d) for(long[] ddd:dd) Arrays.fill(ddd,-1);
			
			long l1=go(r,0,0,0,0), l2=go(l,0,0,0,0);;
			out.println(l1-l2);
		}
		out.close();
	}
	static int b;
	public static long go(String r, int at, int lower, int start, int mask) {
		if(at==r.length()) {
			return mask==0L?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;
	static String l,r;
	
	static class FastScanner {
		BufferedReader br;
		StringTokenizer st;

		public FastScanner() {
			try	{
				br = new BufferedReader(new InputStreamReader(System.in));
				st = new StringTokenizer(br.readLine());
			} catch (Exception e){e.printStackTrace();}
		}

		public String next() {
			if (st.hasMoreTokens())	return st.nextToken();
			try {st = new StringTokenizer(br.readLine());}
			catch (Exception e) {e.printStackTrace();}
			return st.nextToken();
		}

		public int nextInt() {return Integer.parseInt(next());}

		public long nextLong() {return Long.parseLong(next());}

		public double nextDouble() {return Double.parseDouble(next());}

		public String nextLine() {
			String line = "";
			if(st.hasMoreTokens()) line = st.nextToken();
			else try {return br.readLine();}catch(IOException e){e.printStackTrace();}
			while(st.hasMoreTokens()) line += " "+st.nextToken();
			return line;
		}
	}
}