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;
using ll = long long;
const int MAXB = 11;
const int MAXL = 66;
ll dp[MAXB][MAXL][1234];
const ll MAXR = 1e18;
void precomp() {
  for (int base = 2; base <= 10; base++) {
    dp[base][0][0] = 1;
    ll basePow = 1;
    for (int n = 0; basePow < MAXR / base; n++, basePow *= base) {
      for (int m = 0; m < (1 << base); m++) {
        for (int x = 0; x < base; x++) {
          dp[base][n + 1][m ^ (1 << x)] += dp[base][n][m];
        }
      }
    }
  }
}
ll go(int base, ll n) {
  vector<int> digits;
  while (n) {
    digits.push_back(n % base);
    n /= base;
  }
  ll res = 0;
  {
    for (int l = 1; l < int(digits.size()); l++) {
      res += dp[base][l][0] - dp[base][l - 1][1];
    }
  }
  {
    int m = 0;
    bool isHighest = true;
    for (int i = int(digits.size()) - 1; i >= 0; i--) {
      for (int x = int(isHighest); x < digits[i]; x++) {
        res += dp[base][i][m ^ (1 << x)];
      }
      isHighest = false;
      m |= 1 << digits[i];
    }
  }
  return res;
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  precomp();
  int Q;
  cin >> Q;
  while (Q--) {
    int base;
    ll l, r;
    cin >> base >> l >> r;
    cout << go(base, r + 1) - go(base, l) << '\n';
  }
  return 0;
}
