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 <bits/stdc++.h>
using namespace std;
long long pwr(long long base, long long p, long long mod = (1000000007LL)) {
  long long ans = 1;
  while (p) {
    if (p & 1) ans = (ans * base) % mod;
    base = (base * base) % mod;
    p /= 2;
  }
  return ans;
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long DP[11][1 << 11][70][2];
long long dp(int base, int mask, int digs, int started) {
  if (digs == 0) return (mask == 0);
  long long &ans = DP[base][mask][digs][started];
  if (ans != -1) return ans;
  ans = 0;
  for (int i = 0; i < base; i++) {
    int new_started = started | (i > 0);
    int new_mask = mask ^ (new_started ? (1 << i) : 0);
    ans += dp(base, new_mask, digs - 1, new_started);
  }
  return ans;
}
int arr[70], sz;
long long solve(int base, long long n) {
  if (n == 0) return 1;
  sz = 0;
  while (n) {
    arr[sz++] = n % base;
    n /= base;
  }
  for (int i = 0; i < sz - 1 - i; i++) swap(arr[i], arr[sz - 1 - i]);
  if (sz == 1) return 0;
  long long ans = dp(base, 0, sz - 1, 0);
  for (int i = 1; i < arr[0]; i++) ans += dp(base, (1 << i), sz - 1, 1);
  int mask = (1 << arr[0]);
  for (int i = 1; i < sz; i++) {
    for (int j = 0; j < arr[i]; j++)
      ans += dp(base, mask ^ (1 << j), sz - 1 - i, 1);
    mask ^= (1 << arr[i]);
  }
  ans += (mask == 0);
  return ans;
}
int main() {
  int t;
  scanf("%d", &t);
  memset(DP, -1, sizeof(DP));
  while (t--) {
    int base;
    long long L, R;
    scanf("%d%lld%lld", &base, &L, &R);
    printf("%lld\n", solve(base, R) - solve(base, L - 1));
  }
  return 0;
}
