#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define syosu(x) fixed< P; typedef pair pdd; typedef pair pll; typedef vector vi; typedef vector vvi; typedef vector vd; typedef vector vvd; typedef vector vl; typedef vector vvl; typedef vector vc; typedef vector vvc; typedef vector vs; typedef vector vb; typedef vector vvb; typedef vector

vp; typedef vector vvp; typedef vector vpll; typedef pair pip; typedef vector vip; const int inf=1<<30; const ll INF=1ll<<57; const double pi=acos(-1); const double eps=1e-6; const ll mod=1e9+7; const int dx[4]={0,1,0,-1},dy[4]={1,0,-1,-0}; const int DX[8]={-1,-1,-1,0,1,1,1,0},DY[8]={1,0,-1,-1,-1,0,1,1}; const int MOD=1e9; string s; int main(){ cin>>s; int S=s.size(); string t=s.substr(0,(S+1)/2); ll tmp1=0,tmp2=0,TMP1=0,TMP2=0; for(int i=0;i<(S+1)/2;i++){ ((tmp1*=10)+=s[i]-'0')%=mod; ((TMP1*=10)+=s[i]-'0')%=MOD; } if(S==1){ cout<s.substr(S/2,(S+1)/2)){ TMP1--; tmp1--; } cout<<(TMP1+TMP2+MOD)%MOD<