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
//package com.company;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.jar.Pack200;

public class E {

    public static void main(String[] args) {
        Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(System.in)));
        int k = sc.nextInt();
        int a = sc.nextInt();
        int b = sc.nextInt();
        sc.nextLine();
        String s = sc.nextLine();
//        System.out.println(s);
        int n = s.length();
        int[][] dp = new int[n][k];
        int ans = dpHelper(0,k-1,dp,n,k,a,b);
        if (ans==2){
            System.out.println("No solution");
        } else {
            int[] ind = new int[k];
            int curr = 0;
//            for(int i=0;i<n;i++){
//                for (int j =0; j <k;j++){
//                    System.out.println(dp[i][j]);
//                }
//            }
            for (int i =0; i <n;i++) {
                for (int j =0; j <k;j++){
                    int ch = dp[i][j];
                    if (ch==3){

                        ind[curr] = i;
                        curr++;
                        break;
                    }
                }

            }
            for(int i =1; i<k;i++){
                System.out.println(s.substring(ind[i-1],ind[i]));
            }
            System.out.println(s.substring(ind[k-1]));
        }
    }
    // 3 is true, 2 is false, 0 is uninitialized
    public static int dpHelper(int i, int j,  int[][] dp,int n,int k,int a,int b) {
        //base cases
        if (i==n&&j==-1){
            return 3;
        }
        if (i<n&& j>=0&&j<k) {
        if (dp[i][j]!=0) {
            return dp[i][j];
        }

        boolean ans = false;
        for (int c=a;c<=b;c++ ){
            if (dpHelper(i+c, j-1, dp, n,k, a, b)==3){
                ans = true;
                break;
            }
        }
        if (ans){
            dp[i][j] = 3;
        } else {
            dp[i][j] = 2;
        }
        return dp[i][j];
    } else {
            return 2;
        }
    }
}
