#include <bits/stdc++.h>
using namespace std;
const long long INF = LLONG_MAX;
const long long mod = 1e9 + 7;
inline long long power(long long n, long long k, long long mod = INF) {
  long long ans = 1;
  while (k > 0) {
    if (k & 1) ans = (ans * n) % mod;
    n = (n * n) % mod;
    k >>= 1;
  }
  return ans;
}
void sum() {
  string s;
  cin >> s;
  long long n = (long long)s.size();
  long long pre[n + 1];
  long long suf[n + 2];
  pre[1] = s[0] - '0';
  suf[n] = s[n - 1] - '0';
  suf[n + 1] = 0;
  suf[0] = 0;
  pre[0] = 0;
  long long st = pre[1];
  long long en = suf[n];
  long long t = 1;
  long long ans = 0;
  for (long long i = 1; i < n; ++i) {
    t = (t * 10) % mod;
    st = (st * 10 + s[i] - '0') % mod;
    pre[i + 1] = (pre[i] % mod + st) % mod;
    en = (en + t * (s[n - i - 1] - '0')) % mod;
    suf[n - i] = en;
  }
  for (long long i = 2; i <= n + 1; ++i) {
    long long temp = i - 1;
    temp %= mod;
    ans += (((pre[i - 2] * t) % mod) + (((temp)*suf[i]) % mod)) % mod;
    ans %= mod;
    t = ((t % mod) * power(10, mod - 2, mod)) % mod;
  }
  cout << (ans) % mod << "\n";
}
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  sum();
  return 0;
}
