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.util.Scanner;

public class AnfisaTheMonkey {
    static int k, a, b;
    static String[] array;
    static String s;
    static int[][] DP;

    public static void main(String[] args) {
        DP = new int[202][202];
        for (int i = 0; i < DP.length; i++) {
            for (int j = 0; j < DP[i].length; j++) {
                DP[i][j] = -1;
            }
        }
        Scanner scan = new Scanner(System.in);
        k = scan.nextInt();
        a = scan.nextInt();
        b = scan.nextInt();
        array = new String[k];
        s = scan.next();
        method2(0, 0);
        System.out.println("No solution");

    }

    public static int method2(int index, int start) {
        if (index == k && start == s.length()) {
            for (int i = 0; i < array.length; i++) {
                System.out.println(array[i]);
            }
            System.exit(0);
            return 1;
        } else if (index == k)
            return 0;
        else if (start == s.length())
            return -1;
        else {
            if (DP[index][start] == -1) {
                int num = 0;
                for (int i = start + a; i <= start + b; i++) {
                    if (i >= s.length() + 1)
                        break;
//                  System.out.println(start+ " " + i );
                    String one = s.substring(start, i);
                    if (one.length() >= a && one.length() <= b) {
                        array[index] = one;
                        num += method2(index + 1, i);
                    }
                }
                return DP[index][start] = num;
            } else
                return DP[index][start];
        }
    }

    public static void method(int index, String s) {
        if (index == k && s.length() == 0) {
            for (int i = 0; i < array.length; i++) {
                System.out.println(array[i]);
            }
            System.exit(0);
        } else if (index == k)
            return;
        else {
            if (s.length() < a)
                return;
            for (int i = a; i <= b; i++) {
                String one = s.substring(0, i);
                if (one.length() >= a && one.length() <= b) {
                    array[index] = one;
                    method(index + 1, s.substring(i));
                }
            }
        }
    }
}