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;
struct Comparer {
  bool operator()(const tuple<int, int, int, bool, bitset<10>> &a,
                  const tuple<int, int, int, bool, bitset<10>> &b) const {
    auto at =
        tuple<int, int, int, bool>{get<0>(a), get<1>(a), get<2>(a), get<3>(a)};
    auto bt =
        tuple<int, int, int, bool>{get<0>(b), get<1>(b), get<2>(b), get<3>(b)};
    return (at < bt) ||
           (at == bt && get<4>(a).to_ulong() < get<4>(b).to_ulong());
  }
};
map<tuple<int, int, int, bool, bitset<10>>, long long, Comparer> memo;
long long dp(int b, int MSBval, int MSBpos, bool ignoreZeros,
             bitset<10> evens) {
  if (memo.count(tuple<int, int, int, bool, bitset<10>>{b, MSBval, MSBpos,
                                                        ignoreZeros, evens})) {
    return memo[tuple<int, int, int, bool, bitset<10>>{b, MSBval, MSBpos,
                                                       ignoreZeros, evens}];
  }
  bitset<10> origEvens = evens;
  long long ret = 0;
  evens.flip(MSBval);
  evens[0] = evens[0] ^ (MSBpos - 1) & 1;
  if (evens.none()) {
    ret++;
  }
  evens[0] = evens[0] ^ (MSBpos - 1) & 1;
  evens.flip(MSBval);
  if (MSBval > 1) {
    ret += dp(b, MSBval - 1, MSBpos, ignoreZeros, evens);
  }
  if (MSBpos > 1 && MSBval > 0) {
    if (MSBval > 1) {
      evens.flip(MSBval - 1);
    }
    if (MSBval == 1 && !ignoreZeros) {
      evens.flip(0);
    }
    for (int i = MSBpos - 1; i > 0; --i) {
      ret += dp(b, b - 1, i, (ignoreZeros && MSBval == 1 && i == MSBpos - 1),
                evens);
      evens.flip(b - 1);
    }
  }
  return memo[tuple<int, int, int, bool, bitset<10>>{
             b, MSBval, MSBpos, ignoreZeros, origEvens}] = ret;
}
long long ans(int b, long long num) {
  vector<int> digits;
  while (num > 0) {
    digits.push_back(num % b);
    num /= b;
  }
  reverse(digits.begin(), digits.end());
  long long ret = 0;
  bitset<10> evens;
  for (int i = 0; i < digits.size(); ++i) {
    if (digits[i] != 0) {
      ret += dp(b, digits[i], digits.size() - i, i == 0, evens);
    }
    evens.flip(digits[i]);
  }
  return ret;
}
int main() {
  int q;
  cin >> q;
  for (int test = 0; test < q; ++test) {
    int b;
    long long l, r;
    cin >> b >> l >> r;
    int right = ans(b, r);
    int left = ans(b, l - 1);
    cout << right - left << endl;
  }
  return 0;
}
