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;
long long dp[11][1025][20][2];
int q, b;
long long l, r;
vector<int> v;
long long f(int base, int bm, int dig, int same, int zero) {
  if (dig == -1) {
    if (bm == 0 && zero) return 1ll;
    return 0ll;
  }
  if (!same) {
    if (dp[base][bm][dig][zero] >= 0ll) return dp[base][bm][dig][zero];
    dp[base][bm][dig][zero] = f(base, bm ^ zero, dig - 1, 0, zero);
    for (int x = 1; x < base; x++) {
      dp[base][bm][dig][zero] += f(base, bm ^ (1 << x), dig - 1, 0, 1);
    }
    return dp[base][bm][dig][zero];
  } else {
    if (v[dig] == 0) return f(base, bm ^ zero, dig - 1, 1, zero);
    long long ans = f(base, bm ^ zero, dig - 1, 0, zero);
    for (int x = 1; x < v[dig]; x++) {
      ans += f(base, bm ^ (1 << x), dig - 1, 0, 1);
    }
    return ans + f(base, bm ^ (1 << v[dig]), dig - 1, 1, 1);
  }
}
int main() {
  memset(dp, -1, sizeof(dp));
  scanf("%d", &q);
  while (q--) {
    scanf("%d %I64d %I64d", &b, &l, &r);
    v.clear();
    while (r) {
      v.push_back(int(r % long long(b)));
      r /= b;
    }
    long long ans = f(b, 0, v.size() - 1, 1, 0);
    v.clear();
    --l;
    while (l) {
      v.push_back(int(l % long long(b)));
      l /= b;
    }
    ans -= f(b, 0, v.size() - 1, 1, 0);
    printf("%I64d\n", ans);
  }
  return 0;
}
