#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 100000;
const int MOD = 1000000000 + 7;
char str[MAX_N + 10];
int n, K;
int inv[MAX_N + 10], mult[MAX_N + 10];
int fac[MAX_N + 10], po[MAX_N + 10];
inline void inc(int& a, int b) {
  a += b;
  if (a >= MOD) a -= MOD;
}
int main() {
  scanf("%d%d%s", &n, &K, str + 1);
  if (K == 0) {
    int ans = 0;
    for (int i = 1; i <= n; i++)
      ans = (int)(((long long)ans * 10 + (str[i] - '0')) % MOD);
    printf("%d\n", ans);
    return 0;
  }
  inv[0] = inv[1] = 1;
  inv[2] = (MOD + 1) >> 1;
  for (int i = 3; i <= n; i++)
    inv[i] =
        (int)((long long)(MOD / i + 1) * inv[(MOD / i + 1) * i - MOD] % MOD);
  po[0] = fac[0] = 1;
  for (int i = 1; i <= n; i++) {
    inv[i] = (int)((long long)inv[i] * inv[i - 1] % MOD);
    fac[i] = (int)((long long)fac[i - 1] * i % MOD);
    po[i] = (int)((long long)po[i - 1] * 10 % MOD);
  }
  for (int i = 0; i + K < n; i++)
    mult[i] = (int)((long long)po[i] * fac[n - i - 2] % MOD * inv[K - 1] % MOD *
                    inv[n - i - K - 1] % MOD);
  for (int i = 1; i + K < n; i++) inc(mult[i], mult[i - 1]);
  int ans = 0;
  for (int i = 1; i <= n; i++) {
    if (i < n)
      inc(ans, (int)((long long)(str[i] - '0') *
                     mult[min(n - K - 1, n - i - 1)] % MOD));
    if (i - 1 >= K)
      inc(ans, (int)((long long)(str[i] - '0') * po[n - i] % MOD * fac[i - 1] %
                     MOD * inv[K] % MOD * inv[i - 1 - K] % MOD));
  }
  printf("%d\n", ans);
  return 0;
}
