#include using namespace std; #define int long long #define REP(i,m,n) for(int i=(m);i<(n);i++) #define rep(i,n) REP(i,0,n) #define pb push_back #define all(a) a.begin(),a.end() #define rall(c) (c).rbegin(),(c).rend() #define mp make_pair #define endl '\n' #define vec vector #define mat vector > #define fi first #define se second #define double long double typedef long long ll; typedef unsigned long long ull; typedef pair pll; //typedef long double ld; typedef complex Complex; const ll INF=1e9+7; const ll MOD=998244353; const ll inf=INF*INF; const ll mod=INF; const ll MAX=140010; signed main(){ string s;cin>>s; ll n=s.size(); vector >dp(n+1,vector(3)); dp[0][0]=1; rep(i,n){ ll c=s[i]-'0'; ll d=c*(c-1)/2; dp[i+1][0]=dp[i][0]*c%mod; dp[i+1][1]=(dp[i+1][1]+dp[i][0]*d%mod)%mod; dp[i+1][1]=(dp[i+1][1]+dp[i][1]*45LL%mod)%mod; if(i)dp[i+1][1]=(dp[i+1][1]+45LL)%mod; } ll ans=(dp[n][0]+dp[n][1])%mod; cout<