#include <bits/stdc++.h>
using namespace std;
const long long int MOD = 1e9 + 7;
const int N = 200005;
long long int add(long long int x, long long int y) {
  long long int res = x + y;
  return (res >= MOD ? res - MOD : res);
}
long long int mul(long long int x, long long int y) {
  long long int res = x * y;
  return (res >= MOD ? res % MOD : res);
}
int gcd(int a, int b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
bool comp(pair<long long int, long long int>& a,
          pair<long long int, long long int>& b) {
  return (a.first - a.second) > (b.first - b.second);
}
bool isPrime(int n) {
  for (int i = 2; i * i <= n; i++) {
    if ((n % i) == 0) return false;
  }
  return true;
}
long long int max(long long int a, long long int b) {
  if (a > b) return a;
  return b;
}
long long int find(string a, string b) {
  long long int count = a.size() + b.size();
  string temp = "";
  int n = b.size();
  long long int n1 = a.size();
  for (int i = 0; i < n; i++) {
    for (int j = i; j < n; j++) {
      temp = "";
      for (int r = i; r <= j; r++) {
        temp += b[r];
      }
      long long int len = temp.size();
      for (long long int k = 0; k < a.size(); k++) {
        string another = "";
        for (long long int p = k; p < k + len; p++) another += a[p];
        if (another == temp) {
          long long int del = a.size() - len + (b.size() - len);
          count = min(count, del);
        }
      }
    }
  }
  return count;
}
vector<long long int> dp(N, 1);
void init() {
  for (int i = 10; i < N; i++) {
    dp[i] = add(dp[i - 10], dp[i - 9]);
  }
}
void findAns() {
  int n, k;
  cin >> n >> k;
  long long int ans = 0;
  while (n > 0) {
    ans = add(ans, dp[k + n % 10]);
    n /= 10;
  }
  cout << ans << "\n";
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  ;
  long long int t = 1;
  cin >> t;
  init();
  for (int i = 1; i <= t; i++) {
    findAns();
  }
  return 0;
}
