#include <bits/stdc++.h>
using namespace std;
int dirx[] = {1, -1, 0, 0, 1, 1, -1, -1}, diry[] = {0, 0, 1, -1, 1, -1, 1, -1};
long long bigmod(long long x, long long p) {
  long long res = 1;
  while (p) {
    if (p & 1) res = (res * x) % 1000000007;
    x = (x * x) % 1000000007;
    p >>= 1;
  }
  return res;
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  string s;
  cin >> s;
  long long ans = 0;
  int n = s.size();
  for (long long i = 0, j = n - 1; i < n; i++, j--) {
    long long bef = i * (i + 1) / 2;
    bef %= 1000000007;
    bef *= (s[i] - '0');
    ans = (ans + bigmod(10, j) * bef % 1000000007) % 1000000007;
  }
  long long cur = 0;
  for (long long i = 0; i < n - 1; i++) {
    cur += (s[i] - '0');
    cur %= 1000000007;
    ans = (ans + bigmod(10, n - i - 2) * (n - i - 1) % 1000000007 * cur %
                     1000000007) %
          1000000007;
  }
  cout << ans;
  return 0;
}
