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.*;
import java.io.*;

import static java.lang.Math.*;
   
    public class Main {

    public static void main(String[] args) {

        FastReader in = new FastReader();
       
        int k=in.nextInt();
        
        int a=in.nextInt();
        int b=in.nextInt();
        
        String s=in.next();
        
        int r1=0,r2=0;
        
        if(s.length()%k == 0){
            r2=r1=s.length()/k;
        }
        else {
            r1=s.length()/k;
            r2=s.length()/k+1;
        }
        
        StringBuilder sb=new StringBuilder();
        
        if(r1>=a && r2<=b){
           boolean t=true;
           int c=1;
           
           for(int i=0;i<s.length();i++){
               
               if(t && ((c)%r2 == 0)){
                   t=false;
                   sb.append(s.charAt(i)+"\n");
                   k--;
                   if((s.length()-c)%k !=0){
                       t=true;
                   }
                   c=0;
               }
               else {
                   if(((c) % r1 == 0) && !t){
                       sb.append(s.charAt(i)+"\n");
                       k--;
                       c=0;
                   }
                   else
                       sb.append(s.charAt(i));
               }
               c++;
               
           }
            
            if(Character.isWhitespace(sb.charAt(sb.length()-1))){
                sb=new StringBuilder(sb.substring(0, sb.length()-1));
            }
            System.out.println(sb);
        }
        else
            System.out.println("No solution");
    }
    
}



        

class FastReader {

    BufferedReader br;
    StringTokenizer st;

    public FastReader() {
        br = new BufferedReader(new InputStreamReader(System.in));
    }

    String next() {
        while (st == null || !st.hasMoreElements()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    int nextInt() {
        return Integer.parseInt(next());
    }

    long nextLong() {
        return Long.parseLong(next());
    }

    double nextDouble() {
        return Double.parseDouble(next());
    }

    String nextLine() {
        String str = "";
        try {
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }
}
