#include <bits/stdc++.h>
using namespace std;
long long bigmod(long long base, long long power, long long mod) {
  if (power == 0)
    return 1;
  else if (power % 2 == 1) {
    long long p1 = base % mod;
    long long p2 = (bigmod(base, power - 1, mod)) % mod;
    return (p1 * p2) % mod;
  } else if (power % 2 == 0) {
    long long p1 = (bigmod(base, power / 2, mod)) % mod;
    return (p1 * p1) % mod;
  }
}
long long ncr(long long n, long long k) {
  long long C[n + 1][k + 1];
  long long i, j;
  for (i = 0; i <= n; i++) {
    for (j = 0; j <= min(i, k); j++) {
      if (j == 0 || j == i)
        C[i][j] = 1;
      else
        C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
    }
  }
  return C[n][k];
}
long long prime[500008];
long long sp[500008];
void seive() {
  for (int i = 2; i <= 500008; i += 2) sp[i] = 2;
  for (int i = 3; i <= 500008; i += 2) sp[i] = i;
  long long x = sqrt(500008);
  for (int i = 3; i <= x; i += 2) {
    if (sp[i] == i) {
      for (int j = i * i; j <= 500008; j += i) {
        sp[j] = i;
      }
    }
  }
}
map<long long, long long> m;
void pf(long long n) {
  while (1) {
    if (n <= 1) break;
    long long x = sp[n];
    while (n % x == 0) {
      n /= x;
      m[x]++;
    }
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  long long t = 1;
  seive();
  while (t--) {
    long long k, a, b;
    cin >> k >> a >> b;
    string s;
    cin >> s;
    long long n = s.size();
    long long x = n / k;
    long long y = ceil(n / (1.0 * k));
    if (x >= a && y <= b) {
      int j = 0;
      long long rem = n % k;
      for (int i = 1; i <= rem; i++) {
        for (int z = 0; z <= x; z++) {
          cout << s[j++];
        }
        cout << endl;
      }
      for (int i = 1; i <= k - rem; i++) {
        for (int z = 0; z < x; z++) {
          cout << s[j++];
        }
        cout << endl;
      }
    } else
      cout << "No solution" << endl;
  }
}
