func_code_string: /*...................................................................*    *............___..................___.....____...______......___....*    *.../|....../... ........./|...../... ...|.............|..../... ...*    *../.|...../..... ......./.|....|.....|..|.............|.../........*    *....|....|.......|...../..|....|.....|..|............/...|.........*    *....|....|.......|..../...|..... ___/...|___......../....|..___....*    *....|....|.......|.../....|...../... ....... ....../.....|./... ...*    *....|....|.......|../_____|__..|.....|.......|..../......|/..... ..*    *....|..... ...../.........|....|.....|.......|.../........ ...../..*    *..__|__.... ___/..........|..... ___/... ___/.../.......... ___/...*    *...................................................................*    */       #include <bits/stdc++.h>   using namespace std;   #define int long long   #define INF 1000000000000000000      const int M = 200005;   const int MOD = 1000000007;   int dp[10][M];      int recur(int d,int m)   {       if(m==0)       {           dp[d][m]=1;           return 1;       }       if(dp[d][m]!=-1)       {           return dp[d][m];       }       if(d==9)       {           dp[d][m]=(recur(0,m-1)+recur(1,m-1))%MOD;       }       else       {           dp[d][m]=recur(d+1,m-1);       }       return dp[d][m];   }      int32_t main()   {       ios_base::sync_with_stdio(false);       cin.tie(NULL);       cout.tie(NULL);       memset(dp,-1,sizeof(dp));       for(int i=0;i<10;i++)       {           for(int j=0;j<M;j++)           {               if(dp[i][j]==-1)                   recur(i,j);           }       }       int tt=1;       cin >> tt;       while(tt--)       {           int n,m;           cin >> n >> m;           int ans=0;           while(n>0)           {               int d=n%10;               ans=(ans+dp[d][m])%MOD;               n=n/10;           }           cout << ans <<   n ;       }       return 0;   }