#include <bits/stdc++.h>
using namespace std;
const int N = 200100;
const int MOD = (int)1e9 + 7;
int a[N];
char s[N];
long long inv, f[N];
long long cal(int x) {
  if (x < 0) {
    return 0LL;
  }
  return (f[x + 1] + MOD - 1) * inv % MOD;
}
long long _pow(long long x, long long y, long long mod) {
  if (y == 0) {
    return 1LL;
  }
  if (y % 2 == 0) {
    return _pow(x * x % mod, y / 2, mod);
  } else {
    return x * _pow(x, y - 1, mod) % mod;
  }
}
int main() {
  f[0] = 1;
  for (int i = 1; i < N; i++) {
    f[i] = f[i - 1] * 10 % MOD;
  }
  inv = _pow(9, MOD - 2, MOD);
  scanf("%s", s);
  int n = strlen(s);
  long long res = 0;
  for (int i = 0; i < n; i++) {
    a[i] = s[i] - '0';
  }
  long long v = 0;
  for (int i = n - 1; i >= 0; i--) {
    v += f[n - i - 1] * a[i] % MOD;
    v %= MOD;
    res += v * i % MOD;
    res %= MOD;
  }
  long long u = 0;
  for (int i = 0; i < n; i++) {
    u = u * 10 + a[i];
    u %= MOD;
    res += u * cal(n - i - 2) % MOD;
    res %= MOD;
  }
  printf("%lld\n", res);
  return 0;
}
