Anfisa the monkey learns to type. She is yet unfamiliar with the "space" key and can only type in lower-case Latin letters. Having typed for a fairly long line, Anfisa understood that it would be great to divide what she has written into k lines not shorter than a and not longer than b, for the text to resemble human speech more. Help Anfisa.

Input

The first line contains three integers k, a and b (1 ≤ k ≤ 200, 1 ≤ a ≤ b ≤ 200). The second line contains a sequence of lowercase Latin letters — the text typed by Anfisa. It is guaranteed that the given line is not empty and its length does not exceed 200 symbols.

Output

Print k lines, each of which contains no less than a and no more than b symbols — Anfisa's text divided into lines. It is not allowed to perform any changes in the text, such as: deleting or adding symbols, changing their order, etc. If the solution is not unique, print any of them. If there is no solution, print "No solution" (without quotes). 

Examples

Input

3 2 5
abrakadabra


Output

ab
rakad
abra


Input

4 1 2
abrakadabra


Output

No solution
import java.io.BufferedReader;
//import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
//import java.io.FileReader;
//import java.io.FileWriter;
//import java.lang.StringBuilder;
import java.util.StringTokenizer;
//import java.lang.Comparable;
//import java.util.Arrays;
//import java.util.HashMap;
//import java.util.ArrayList;

public class AnfisaTheMonkey {
    public static void main(String[] args) throws IOException {
        //BufferedReader in = new BufferedReader(new FileReader("input.txt"));
        //PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("output.txt")));
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(System.out);
        StringTokenizer st = new StringTokenizer(in.readLine());
        int n = Integer.parseInt(st.nextToken());
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        char[] c = in.readLine().toCharArray();
        double r = (double)c.length / (double)n;
        if(r < (double) a || r > (double) b) {
            out.print("No solution");
            out.close();
            return;
        }
        int j = 0;
        StringBuilder sb = new StringBuilder();
        for(int i = n-1; i > -1; i--) {
            if(i == 0) {
                for(int k = j; k < c.length; k++) {
                    sb.append(c[k]);
                }
            } else {
                double rmax = (double) (c.length - j - b) / (double) i;
                double rmin = (double) (c.length - j - a) / (double) i;
                int jmax = j + b;
                if(rmin >= (double) a && rmin <= (double) b) {
                    jmax = j + a;
                }
                for(int k = j; k < jmax; k++) {
                    sb.append(c[k]);
                }
                j = jmax;
            }
            sb.append("\n");
        }
        out.print(sb);
        out.close();
    }
}