inline ll read(){ ll x = 0; char ch = getchar(); while (!isdigit(ch)) ch = getchar(); while (isdigit(ch)) { x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar(); } return x; }
inlineintdigitSum(ll x){ int s = 0; while (x) s += x % 10, x /= 10; return s; } intdigitalRoot(ll x){ returndigitSum(digitSum(digitSum(x))); }
inline ll k0(){ return (m >= 1 ? 1 : 0); } inline ll k1(){ ll res = 0; for (int t = 1; t <= 171 && t < m; t++) if (digitSum(m - t) == t) res++; return res; } inline ll k2(){ ll res = 0; for (int t = 1; t <= 171; t++) { ll x = m - t - digitSum(t); if (x >= 1 && digitSum(x) == t) res++; } return res; } inline ll k3(){ ll res = 0; for (int d = 1; d <= 9; d++) { ll base = m - (k - 2LL) * d; for (int t = d; t <= 171; t += 9) { ll x = base - t - digitSum(t); if (x < 1) break; if (digitSum(x) == t && digitalRoot(x) == d) res++; } } return res; }
intmain(){ T = read(), k = read(); while (T--) { m = read(); if (k == 0) cout << k0() << '\n'; elseif (k == 1) cout << k1() << '\n'; elseif (k == 2) cout << k2() << '\n'; else cout << k3() << '\n'; } return0; }