#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC target("avx")
using namespace std;
const int dm = 1 << 22;
char dn[dm], *di = dn;
int main() {
  int N, K;
  char S[20];
  scanf("%d", &N);
  scanf("%d", &K);
  scanf("%s", S);
  int s = atoi(S);
  int L = strlen(S);
  S[L++] = ' ';
  int tot = 0;
  if (K) {
    int n = 1;
    strcpy(di, S);
    di += L;
    while (n * 2 < K) {
      strcpy(di, dn);
      di += L * n;
      n *= 2;
    }
    int nokori = K - n;
    strncpy(di, dn, nokori * L);
    di += L * nokori;
    tot += L * K;
  }
  if (N - K) {
    int n = 1;
    int p;
    if (L <= 6) {
      for (int i = 1; i <= (10); i++)
        if (s % i) {
          p = i;
          break;
        }
    } else
      p = 1;
    char S2[3];
    S2[0] = '0' + p;
    S2[1] = ' ';
    L = 2;
    auto dn2 = di;
    strcpy(di, S2);
    di += L;
    while (n * 2 < N - K) {
      strcpy(di, dn2);
      di += L * n;
      n *= 2;
    }
    int nokori = N - K - n;
    strncpy(di, dn2, nokori * L);
    di += L * nokori;
    tot += L * (N - K);
  }
  fwrite(dn, 1, tot, stdout);
  return 0;
}
