#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long powmod(long long a, long long b, long long p) {
  if (b == 0) return 1;
  if (b == 1) return a;
  long long temp = powmod(a, b / 2, p);
  temp *= temp;
  temp %= p;
  if (b % 2 == 0) return temp;
  temp = temp * a;
  temp %= p;
  return temp;
}
void solve() {
  int n, l, k;
  cin >> n >> l >> k;
  string s;
  cin >> s;
  sort((s).begin(), (s).end());
  vector<string> a(n, string(l, '.'));
  int freq[26] = {0};
  for (char c : s) freq[c - 'a']++;
  int v = 0;
  int c = 0;
  for (__typeof((l)) i = (0); i < (l); i++) {
    for (__typeof((k)) j = (v); j < (k); j++) {
      while (freq[c] == 0) c++;
      a[j][i] = 'a' + c;
      freq[c]--;
    }
    while (a[v][i] != a[k - 1][i]) v++;
  }
  for (__typeof((n)) i = (0); i < (n); i++) {
    for (__typeof((l)) j = (0); j < (l); j++) {
      if (a[i][j] == '.') {
        while (freq[c] == 0) c++;
        a[i][j] = 'a' + c;
        freq[c]--;
      }
    }
  }
  for (__typeof((n)) i = (0); i < (n); i++) cout << a[i] << endl;
  return;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
