#include <bits/stdc++.h>
#pragma warning(disable : 4996);
const long long int mod = 1e9 + 7;
using namespace std;
long long int n, k, fac[100007], rfac[100007], r[100007], m[100007],
    deg10[100007];
char c[100007];
long long int C(int n, int k) {
  if (k > n) {
    return 0;
  } else {
    return fac[n] * rfac[k] % mod * rfac[n - k] % mod;
  }
}
void sol() {
  long long int i, j, sum, ans;
  fac[0] = 1;
  r[1] = 1;
  rfac[0] = 1;
  for (i = 1; i <= n; i++) {
    fac[i] = fac[i - 1] * i;
    fac[i] %= mod;
    if (i != 1) r[i] = (mod * mod - (mod / i) * r[mod % i]) % mod;
    rfac[i] = rfac[i - 1] * r[i];
    rfac[i] %= mod;
  }
  gets(c);
  gets(c);
  for (i = 0; i < n; i++) m[i] = c[i] - '0';
  deg10[0] = 1;
  for (i = 1; i < n; i++) {
    deg10[i] = deg10[i - 1] * 10;
    deg10[i] %= mod;
  }
  ans = 0;
  sum = 0;
  for (i = n - 1; i >= 0; i--) {
    ans += m[i] * sum;
    ans %= mod;
    ans += m[i] * C(i, k) * deg10[n - i - 1];
    ans %= mod;
    sum += C(i - 1, k - 1) * deg10[n - i - 1];
    sum %= mod;
  }
  printf("%I64d\n", ans);
}
int main() {
#pragma comment(linker, "/STACK:1073741824")
  if (0) {
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
  } else {
  }
  while (scanf("%I64d%I64d", &n, &k) != EOF) sol();
}
