#include <bits/stdc++.h>
using namespace std;
long long dp[10001]={};
int weishu(int n){
if(dp[n-1]==0) weishu(n-1);
dp[n]=(pow(9,n)-dp[n-1])/2+dp[n-1];
}
int f(int n){
}
int main()
{
long long sum;
long long N;
vector<int> num;
while(cin>>N){
while(N>0){
num.push_back(N%10);
N/=10;
}
weishu(num.size());
cout<<dp[num.size()]<<endl;
}
return 0;
}
/*
1
2
3
4
5
6
7
8
9
11,12,13,14,15,16,17,18,19
22,23,24,25,26,27,28,29
33,34,35,36,37,38,39
44,45,46,47,48,49
55,56,57,58,59
66,67,68,69
77,78,79
88,89
99
n=1 9
n=2 (9*9-9)/2+9
n=3 (9*9*9-9*9)/2+9*9
*/
#include <bits/stdc++.h>
using namespace std;
long long I[100000][10]={};
const int mod=10e9+7;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie();
I[0][0]=0;
cout<<I[0][0]<<" ";
for(int i=1;i<10;i++){
I[0][i]=1;
cout<<I[0][i]<<" ";
}
cout<<"\n";
for(int j=1;j<10;j++){
for(int i=0;i<10;i++){
I[j][0]+=I[j-1][i];
}
cout<<I[j][0]<<" ";
for(int i=1;i<10;i++){
I[j][i]=I[j][i-1]-I[j-1][i-1];
cout<<I[j][i]<<" ";
}
cout<<"\n";
}
string s;
while(cin>>s){
int index=0;
long long sum=0;
while(index<s.size()){
int lim=s[s.size()-index-1]-'0';
cout<<lim<<" ";
for(int i=0;i<lim;i++){
sum+=I[index][i];
}
cout<<" sum:"<<sum<<" ";
index++;
}
sum=sum%mod;
cout<<sum<<"\n";
}
return 0;
}
/*
0 1-9 1-99 1-999
1 10-19 100-199 1000-1999
2 20-29 200-299 2000-2999
2345
1-1999
1-299
1-39
1-5
n=1 9
n=2 (9*9-9)/2+9
n=3 (9*9*9-9*9)/2+9*9
*/
#include <bits/stdc++.h>
using namespace std;
long long I[100000][10]={};
const int mod=10e9+7;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie();
I[0][0]=0;
cout<<I[0][0]<<" ";
for(int i=1;i<10;i++){
I[0][i]=1;
cout<<I[0][i]<<" ";
}
cout<<"\n";
for(int j=1;j<10;j++){
for(int i=0;i<10;i++){
I[j][0]+=I[j-1][i];
}
cout<<I[j][0]<<" ";
for(int i=1;i<10;i++){
I[j][i]=I[j][i-1]-I[j-1][i-1];
cout<<I[j][i]<<" ";
}
//I[j][0]=I[j][1];
cout<<"\n";
}
string s;
while(cin>>s){
int index=0;
long long sum=0;
while(index<s.size()){
int lim=s[s.size()-index-1]-'0';
cout<<lim<<" ";
/*for(int i=0;i<lim;i++){
sum+=I[index][i];
}*/
sum+=I[index+1][0]-I[index+1][lim];
cout<<" sum:"<<sum<<" ";
index++;
}
sum=sum%mod;
cout<<sum<<"\n";
}
return 0;
}
/*
0 1-9 1-99 1-999
1 10-19 100-199 1000-1999
2 20-29 200-299 2000-2999
2345
1-1999
1-299
1-39
1-5
n=1 9
n=2 (9*9-9)/2+9
n=3 (9*9*9-9*9)/2+9*9
*/