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;
int Q[11];
long long D[70][11][11];
int quan;
long long a, b, base;
long long f(long long p, long long val, int dig) {
  if (val > b) return 0;
  if (long double(val) + long double(p) * long double(base - 1) <
      long double(a))
    return 0;
  if (dig == 0) {
    if (quan == 0) return 1;
    return 0;
  }
  if (val >= a and val + p * base - 1 <= b) {
    return D[dig][base][quan];
  }
  long long res = 0;
  for (long long i = 0; i < base; ++i) {
    if (long double(val) + long double(i * p) > long double(b)) break;
    if (val or i) {
      if (Q[i]) {
        --quan;
        Q[i] = 0;
      } else {
        ++quan;
        Q[i] = 1;
      }
    }
    res += f(p / base, val + p * i, dig - 1);
    if (val or i) {
      if (Q[i]) {
        --quan;
        Q[i] = 0;
      } else {
        ++quan;
        Q[i] = 1;
      }
    }
  }
  return res;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  for (int i = 0; i < 11; ++i) {
    D[0][i][0] = 1;
  }
  for (int i = 1; i < 70; ++i) {
    for (long long j = 2; j < 11; ++j) {
      for (long long k = 0; k <= j; ++k) {
        if (k) D[i][j][k] += k * D[i - 1][j][k - 1];
        if (j - k) D[i][j][k] += (j - k) * D[i - 1][j][k + 1];
      }
    }
  }
  int q;
  cin >> q;
  while (q--) {
    cin >> base >> a >> b;
    quan = 0;
    memset(Q, 0, sizeof(Q));
    long long e = 1e18;
    int dig = 0;
    while (1) {
      e /= base;
      ++dig;
      if (e == 0) break;
    }
    long long pot = 1;
    for (int i = 1; i < dig; ++i) pot *= base;
    long long rr = f(pot, 0, dig);
    cout << rr << '\n';
  }
}
