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 namespace placeholders;
template <class T>
void mini(T &l, T r) {
  l = min(l, r);
}
template <class T>
void maxi(T &l, T r) {
  l = max(l, r);
}
template <class TH>
void _dbg(const char *sdbg, TH h) {
  cerr << sdbg << "=" << h << "\n";
}
template <class TH, class... TA>
void _dbg(const char *sdbg, TH h, TA... a) {
  while (*sdbg != ',') cerr << *sdbg++;
  cerr << "=" << h << ",";
  _dbg(sdbg + 1, a...);
}
template <class T>
ostream &operator<<(ostream &os, vector<T> v) {
  os << "[";
  for (auto vv : v) os << vv << ",";
  return os << "]";
}
template <class L, class R>
ostream &operator<<(ostream &os, pair<L, R> p) {
  return os << "(" << p.first << "," << p.second << ")";
}
using llint = long long;
llint dp[12][70][1 << 10];
vector<int> get(llint x, int b) {
  vector<int> ret;
  while (x) {
    ret.push_back(x % b);
    x /= b;
  }
  reverse(ret.begin(), ret.end());
  return ret;
}
void go_dp(int b) {
  auto f = dp[b];
  int H = 1 << b;
  for (int i = 0; i < 70; ++i) {
    for (int msk = 0; msk < H; ++msk) f[i][msk] = 0;
  }
  f[0][0] = 1;
  for (int i = 0; i < 70; ++i) {
    int l = 0;
    if (i == 0) l = 1;
    for (int msk = 0; msk < H; ++msk)
      if (f[i][msk]) {
        for (int j = l; j < b; ++j) {
          f[i + 1][msk ^ (1 << j)] += f[i][msk];
        }
      }
  }
}
void init() {
  for (int b = 2; b <= 10; ++b) {
    go_dp(b);
  }
}
llint solve(llint x, int b) {
  if (x == 0) return 0;
  vector<int> v = get(x, b);
  ;
  int z = v.size();
  int msk = 0;
  llint ret = 0;
  for (int i = 0; i < z; ++i) {
    int l = 0;
    if (i == 0) l = 1;
    for (int j = l; j < v[i]; ++j) {
      int nmsk = msk ^ (1 << j);
      ret += dp[b][z - i - 1][nmsk];
      ;
    }
    msk = msk ^ (1 << v[i]);
  }
  for (int i = 1; i < z; ++i) {
    ret += dp[b][z - i][0];
    ;
  };
  return ret + (msk == 0);
}
void run() {
  init();
  int q;
  scanf("%d", &q);
  int b;
  llint l, r;
  while (q--) {
    scanf("%d%lld%lld", &b, &l, &r);
    printf("%lld\n", solve(r, b) - solve(l - 1, b));
  }
}
int main() {
  run();
  return 0;
}
