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>
const int mb = 11;
const int ms = 68;
long long memo[mb][ms][mb];
long long dp(int base, int on, int mask) {
  if (mask < 0 || mask > base) return 0;
  if (on == 0) return mask == 0 ? 1 : 0;
  long long &ans = memo[base][on][mask];
  if (ans != -1) return ans;
  ans = mask * dp(base, on - 1, mask - 1) +
        (base - mask) * dp(base, on - 1, mask + 1);
  return ans;
}
long long solve(long long x, int base) {
  if (x < base) {
    return 0;
  }
  std::vector<int> nums;
  while (x) {
    nums.push_back(x % base);
    x /= base;
  }
  std::reverse(nums.begin(), nums.end());
  long long ans = 0;
  int mask = 0;
  int odd = 0;
  for (int i = 0; i < nums.size(); i++) {
    ans += (base - 1) * dp(base, nums.size() - i - 1, 1);
    for (int j = (i == 0 ? 1 : 0); j < nums[i]; j++) {
      if (mask & (1 << j))
        ans += dp(base, nums.size() - i - 1, odd - 1);
      else
        ans += dp(base, nums.size() - i - 1, odd + 1);
    }
    if (mask & (1 << nums[i]))
      odd--;
    else
      odd++;
    mask ^= (1 << nums[i]);
  }
  if (mask == 0) ans++;
  return ans;
}
int main() {
  memset(memo, -1, sizeof memo);
  int q;
  std::cin >> q;
  while (q--) {
    long long b, l, r;
    scanf("%lli %lli %lli", &b, &l, &r);
    printf("%lli\n", solve(r, b) - solve(l - 1, b));
  }
}
