#include <bits/stdc++.h>
using namespace std;
int used[27];
string f[1001];
set<char> c;
int main() {
  int n, l, k1;
  cin >> n >> l >> k1;
  string s;
  cin >> s;
  for (int i = 0; i < s.size(); i++) {
    int k = (s[i] - 'a');
    used[k]++;
    c.insert(s[i]);
  }
  set<char>::iterator it;
  int cnt = 0;
  int ind = 0;
  for (int i = 0; i < k1; i++) {
    char p = *c.begin();
    f[i] += p;
    int k = p - 'a';
    used[k]--;
    if (used[k] == 0) c.erase(c.begin());
  }
  for (int i = k1 - 2; i >= 0; i--) {
    if (f[i] == f[k1 - 1]) cnt++, ind = i;
  }
  if (cnt == 0) {
    while (f[k1 - 1].size() < l) {
      char p = *c.begin();
      f[k1 - 1] += p;
      int k = p - 'a';
      used[k]--;
      if (used[k] == 0) c.erase(c.begin());
    }
    for (int i = 0; i < n; i++) {
      if (i != k1 - 1) {
        while (f[i].size() < l) {
          char p = *c.begin();
          f[i] += p;
          int k = p - 'a';
          used[k]--;
          if (used[k] == 0) c.erase(c.begin());
        }
      }
    }
    for (int k = 0; k < n; k++) cout << f[k] << endl;
  } else {
    while (cnt != 0) {
      int p = 0;
      for (int i = ind; i <= k1 - 1 && f[i].size() <= l; i++) {
        if (f[i].size() == l) {
          p = 1;
          break;
        }
        char p = *c.begin();
        int k = p - 'a';
        f[i] += p;
        used[k]--;
        if (used[k] == 0) c.erase(c.begin());
      }
      if (p == 1) {
        break;
      }
      cnt = 0;
      int ind1 = 0;
      for (int k = k1 - 2; k >= ind; k--) {
        int d = f[k].size();
        if (f[k][d - 1] == f[k1 - 1][d - 1]) cnt++, ind1 = k;
      }
      ind = ind1;
    }
    while (f[k1 - 1].size() < l) {
      char p = *c.begin();
      int k = p - 'a';
      f[k1 - 1] += p;
      used[k]--;
      if (used[k] == 0) c.erase(c.begin());
    }
    for (int i = 0; i < n; i++) {
      if (i != k1 - 1) {
        while (f[i].size() < l) {
          char p = *c.begin();
          int k = p - 'a';
          f[i] += p;
          used[k]--;
          if (used[k] == 0) c.erase(c.begin());
        }
      }
    }
    for (int i = 0; i < n; i++) cout << f[i] << endl;
  }
}
