You are given an integer n. You have to apply m operations to it.

In a single operation, you must replace every digit d of the number with the decimal representation of integer d + 1. For example, 1912 becomes 21023 after applying the operation once.

You have to find the length of n after applying m operations. Since the answer can be very large, print it modulo 10^9+7.

Input

The first line contains a single integer t (1 ≤ t ≤ 2 ⋅ 10^5) — the number of test cases.

The only line of each test case contains two integers n (1 ≤ n ≤ 10^9) and m (1 ≤ m ≤ 2 ⋅ 10^5) — the initial number and the number of operations. 

Output

For each test case output the length of the resulting number modulo 10^9+7.

Example

Input


5
1912 1
5 6
999 1
88 2
12 100


Output


5
2
6
4
2115

Note

For the first test, 1912 becomes 21023 after 1 operation which is of length 5.

For the second test, 5 becomes 21 after 6 operations which is of length 2.

For the third test, 999 becomes 101010 after 1 operation which is of length 6.

For the fourth test, 88 becomes 1010 after 2 operations which is of length 4.
#include <iostream>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <queue>
#include <ctime>
#include <cassert>
#include <complex>
#include <string>
#include <cstring>
#include <chrono>
#include <random>
#include <bitset>
#include <limits>
#include <numeric>

using namespace std;

const int MOD = 1e9 + 7;

struct matrix {
	

    int size = 10;
    int a[10][10];
	
    matrix() {
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                a[i][j] = 0;
            }
        }
    }
	
	matrix operator *(matrix& other) {
		matrix product;
		for (int i = 0; i < size; i++) {
			for (int j = 0; j < size; j++) {
				for (int k = 0; k < size; k++) {
					product.a[i][k] += a[i][j] * other.a[j][k] % MOD;
					product.a[i][k] %= MOD;
				}
			}
		}
		return product;
	}
	
};

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	
    vector<matrix> m(200001);
    matrix trans;
    trans.a[0][9] = 1;
    trans.a[1][9] = 1;
    for (int i = 1; i <= 9; i++) {
        trans.a[i][i - 1] = 1;
    }
    for (int i = 0; i <= 9; i++) {
        m[0].a[i][i] = 1;
    }
    for (int i = 1; i <= 200000; i++) {
        m[i] = trans * m[i - 1];
    }
	
	int tt;
	cin >> tt;
	while (tt--) {
        string s;
        int k;
        cin >> s >> k;
        int cnt[10];
        for (int i = 0; i < 10; i++) {
            cnt[i] = 0;
        }
        for (char c : s) {
            cnt[c - '0']++;
        }
        long long answer = 0;
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                answer = (answer + (long long)m[k].a[i][j] * cnt[j]) % MOD;
            }
        }
        cout << answer << '\n';
	}
}
