Let us define two functions *f* and *g* on positive integer numbers. 

<img align="middle" class="tex-formula" src="https://espresso.codeforces.com/120df92771639f1f51a4b216dccd3ed7c32bb859.png" style="max-width: 100.0%;max-height: 100.0%;"/> 

You need to process *Q* queries. In each query, you will be given three integers *l*, *r* and *k*. You need to print the number of integers *x* between *l* and *r* inclusive, such that *g*(*x*) = *k*.
The first line of the input contains an integer *Q* (1 ≤ *Q* ≤ 2 × 10<sup class="upper-index">5</sup>) representing the number of queries. 

*Q* lines follow, each of which contains 3 integers *l*, *r* and *k* (1 ≤ *l* ≤ *r* ≤ 10<sup class="upper-index">6</sup>, 1 ≤ *k* ≤ 9).
In the first example:
 -  *g*(33) = 9 as *g*(33) = *g*(3 × 3) = *g*(9) = 9 -  *g*(47) = *g*(48) = *g*(60) = *g*(61) = 6 -  There are no such integers between 47 and 55. -  *g*(4) = *g*(14) = *g*(22) = *g*(27) = *g*(39) = *g*(40) = *g*(41) = *g*(58) = 4
4
22 73 9
45 64 6
47 55 7
2 62 4
1
4
0
8
4
82 94 6
56 67 4
28 59 9
39 74 4
3
1
1
5
import collections

f_memo = {0: 1}
g_memo = {i: i for i in range(10)}


def f(n):
    if n in f_memo:
        return f_memo[n]
    f_memo[n] = result = ((n % 10) or 1) * f(n // 10)
    return result


def g(n):
    if n in g_memo:
        return g_memo[n]
    g_memo[n] = result = g(f(n))
    return result


def solve(queries):
    equal_k_below_i = collections.defaultdict(int)  # inclusive
    max_r = max(r for _, r, _ in queries)
    for i in range(1, max_r + 1):
        current_k = g(i)
        for k in range(10):
            equal_k_below_i[k, i] = equal_k_below_i[k, i - 1] + (k == current_k)
    result = []
    for l, r, k in queries:
        below_r = equal_k_below_i[k, r]
        below_l = equal_k_below_i[k, l - 1]
        result.append(below_r - below_l)
    return result

if __name__ == "__main__":
    Q = int(input())
    queries = []
    for _ in range(Q):
        queries.append(tuple(map(int, input().split())))
    print("\n".join(map(str, solve(queries))))
