#include <stdio.h>
#include <climits>
#include <iostream>
#include <map>
#include <cmath>
#include <algorithm>
#include <set>
#include <stack>
#include <deque>
#include <vector>
#include <stdlib.h>
#include <string>
#include <string.h>
#include <utility>
#include <queue>
using namespace std;
#define ll long long
#define sl(n) scanf("%lld", &n)
#define sf(n) scanf("%lf", &n)
#define si(n) scanf("%d", &n)
#define ss(n) scanf("%s", n)
#define pii pair <int, int>
#define pll pair <long long, long long>
#define pb push_back
deque <ll> digits;
ll k;
ll pwr(ll b, ll p)
{
if (p == 0)
return 1;
ll x = pwr(b, p/2);
x = (x*x)%k;
if (p%2 == 0)
return x;
else return (b*x)%k;
}
ll dp[10][2][82][82];
ll solve(ll i, ll isSmall, ll mod, ll mod2)
{
if (i == -1)
{
if (mod == 0 && mod2 == 0)
return 1;
else return 0;
}
if (dp[i][isSmall][mod][mod2] != -1)
return dp[i][isSmall][mod][mod2];
ll limit = isSmall == 1? 9 : digits[i], ans = 0;
// cout << i << " " << isSmall << " " << mod << " " << limit << " " << digits[i] << endl;
for (ll j = 0; j <= limit; j++)
{
ans += solve(i - 1, isSmall | (j < digits[i]), (mod + (j*pwr(10, i))%k)%k, (mod2 + j)%k);
}
return (dp[i][isSmall][mod][mod2] = ans);
}
int main ()
{
// freopen("inl.txt", "r", stdin);
// freopen("outu.txt", "w", stdout);
// ios_base::sync_with_stdio(0); // no printf/scanf must be present
ll cs, t, i, j, n, x, y, z, ans, q, m;
sl(t);
for (cs = 1; cs <= t; cs++)
{
sl(x);
sl(y);
sl(k);
if (k <= 81)
{
digits.clear();
while (y != 0)
{
digits.push_back(y%10);
y /= 10;
}
memset(dp, -1, sizeof(dp));
ans = solve(digits.size() - 1, 0, 0, 0);
cout << ans << endl;
x--;
if (x != 0)
{
digits.clear();
while (x != 0)
{
digits.push_back(x%10);
x /= 10;
}
memset(dp, -1, sizeof(dp));
ans -= solve(digits.size() - 1, 0, 0, 0);
}
else ans--;
}
else ans = 0;
printf("Case %lld: %lld\n", cs, ans);
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxjbGltaXRzPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8ZGVxdWU+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHN0cmluZy5oPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHF1ZXVlPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgc2wobikgc2NhbmYoIiVsbGQiLCAmbikKI2RlZmluZSBzZihuKSBzY2FuZigiJWxmIiwgJm4pCiNkZWZpbmUgc2kobikgc2NhbmYoIiVkIiwgJm4pCiNkZWZpbmUgc3Mobikgc2NhbmYoIiVzIiwgbikKI2RlZmluZSBwaWkgcGFpciA8aW50LCBpbnQ+CiNkZWZpbmUgcGxsIHBhaXIgPGxvbmcgbG9uZywgbG9uZyBsb25nPgojZGVmaW5lIHBiIHB1c2hfYmFjawoKZGVxdWUgPGxsPiBkaWdpdHM7CgpsbCBrOwoKbGwgcHdyKGxsIGIsIGxsIHApCnsKICAgIGlmIChwID09IDApCiAgICAgICAgcmV0dXJuIDE7CgogICAgbGwgeCA9IHB3cihiLCBwLzIpOwoKICAgIHggPSAoeCp4KSVrOwoKICAgIGlmIChwJTIgPT0gMCkKICAgICAgICByZXR1cm4geDsKICAgIGVsc2UgcmV0dXJuIChiKngpJWs7Cn0KCmxsIGRwWzEwXVsyXVs4Ml1bODJdOwoKbGwgc29sdmUobGwgaSwgbGwgaXNTbWFsbCwgbGwgbW9kLCBsbCBtb2QyKQp7CiAgICBpZiAoaSA9PSAtMSkKICAgIHsKICAgICAgICBpZiAobW9kID09IDAgJiYgbW9kMiA9PSAwKQogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICBlbHNlIHJldHVybiAwOwogICAgfQoKICAgIGlmIChkcFtpXVtpc1NtYWxsXVttb2RdW21vZDJdICE9IC0xKQogICAgICAgIHJldHVybiBkcFtpXVtpc1NtYWxsXVttb2RdW21vZDJdOwoKICAgIGxsIGxpbWl0ID0gaXNTbWFsbCA9PSAxPyA5IDogZGlnaXRzW2ldLCBhbnMgPSAwOwoKICAgIC8vICBjb3V0IDw8IGkgPDwgIiAiIDw8IGlzU21hbGwgPDwgIiAiIDw8IG1vZCA8PCAiICIgPDwgbGltaXQgPDwgIiAiIDw8IGRpZ2l0c1tpXSA8PCBlbmRsOwoKICAgIGZvciAobGwgaiA9IDA7IGogPD0gbGltaXQ7IGorKykKICAgIHsKICAgICAgICBhbnMgKz0gc29sdmUoaSAtIDEsIGlzU21hbGwgfCAoaiA8IGRpZ2l0c1tpXSksIChtb2QgKyAoaipwd3IoMTAsIGkpKSVrKSVrLCAobW9kMiArIGopJWspOwogICAgfQoKICAgIHJldHVybiAoZHBbaV1baXNTbWFsbF1bbW9kXVttb2QyXSA9IGFucyk7Cn0KCmludCBtYWluICgpCnsKICAgIC8vICBmcmVvcGVuKCJpbmwudHh0IiwgInIiLCBzdGRpbik7CiAgICAvLyBmcmVvcGVuKCJvdXR1LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIC8vICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyAvLyBubyBwcmludGYvc2NhbmYgbXVzdCBiZSBwcmVzZW50CiAgICBsbCBjcywgdCwgaSwgaiwgbiwgeCwgeSwgeiwgYW5zLCBxLCBtOwoKICAgIHNsKHQpOwoKICAgIGZvciAoY3MgPSAxOyBjcyA8PSB0OyBjcysrKQogICAgewogICAgICAgIHNsKHgpOwogICAgICAgIHNsKHkpOwogICAgICAgIHNsKGspOwoKICAgICAgICBpZiAoayA8PSA4MSkKICAgICAgICB7CiAgICAgICAgICAgIGRpZ2l0cy5jbGVhcigpOwoKICAgICAgICAgICAgd2hpbGUgKHkgIT0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZGlnaXRzLnB1c2hfYmFjayh5JTEwKTsKICAgICAgICAgICAgICAgIHkgLz0gMTA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG1lbXNldChkcCwgLTEsIHNpemVvZihkcCkpOwoKICAgICAgICAgICAgYW5zID0gc29sdmUoZGlnaXRzLnNpemUoKSAtIDEsIDAsIDAsIDApOwoKICAgICAgICAgICAgY291dCA8PCBhbnMgPDwgZW5kbDsKCiAgICAgICAgICAgIHgtLTsKCiAgICAgICAgICAgIGlmICh4ICE9IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRpZ2l0cy5jbGVhcigpOwoKICAgICAgICAgICAgICAgIHdoaWxlICh4ICE9IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZGlnaXRzLnB1c2hfYmFjayh4JTEwKTsKICAgICAgICAgICAgICAgICAgICB4IC89IDEwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG1lbXNldChkcCwgLTEsIHNpemVvZihkcCkpOwoKICAgICAgICAgICAgICAgIGFucyAtPSBzb2x2ZShkaWdpdHMuc2l6ZSgpIC0gMSwgMCwgMCwgMCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBhbnMtLTsKICAgICAgICB9CiAgICAgICAgZWxzZSBhbnMgPSAwOwogICAgICAgIHByaW50ZigiQ2FzZSAlbGxkOiAlbGxkXG4iLCBjcywgYW5zKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==