#include <bits/stdc++.h>
using namespace std;
const long long inf = (long long)1e9 + 10;
const long long linf = (long long)1e18 + 10;
const long long mod = (long long)(1e9 + 7);
const int dx[] = {0, 1, 0, -1};
const int dy[] = {1, 0, -1, 0};
const int ddx[] = {0, 1, 1, 1, 0, -1, -1, -1};
const int ddy[] = {1, 1, 0, -1, -1, -1, 0, 1};
const double eps = 1e-10;
struct oreno_initializer {
  oreno_initializer() {
    cin.tie(0);
    ios::sync_with_stdio(0);
  }
} oreno_initializer;
int q, l, r, k, m[10][1001001];
int f(int n) {
  int res = 1;
  while (n) {
    int a = n % 10;
    if (a != 0) res *= a;
    n /= 10;
  }
  return res;
}
int g(int n) {
  if (n < 10) return n;
  return g(f(n));
}
signed main() {
  for (int(i) = (1); (i) < (((1000000) + 1)); ++(i)) {
    int k = g(i);
    m[k][i]++;
    for (int(j) = (0); (j) < (10); ++(j)) m[j][i] += m[j][i - 1];
  }
  cin >> q;
  for (int(i) = (0); (i) < (q); ++(i)) {
    cin >> l >> r >> k;
    cout << m[k][r] - m[k][l - 1] << '\n';
  }
}
