You are given a string q. A sequence of k strings s1, s2, ..., sk is called beautiful, if the concatenation of these strings is string q (formally, s1 + s2 + ... + sk = q) and the first characters of these strings are distinct.

Find any beautiful sequence of strings or determine that the beautiful sequence doesn't exist.

Input

The first line contains a positive integer k (1 ≤ k ≤ 26) — the number of strings that should be in a beautiful sequence. 

The second line contains string q, consisting of lowercase Latin letters. The length of the string is within range from 1 to 100, inclusive.

Output

If such sequence doesn't exist, then print in a single line "NO" (without the quotes). Otherwise, print in the first line "YES" (without the quotes) and in the next k lines print the beautiful sequence of strings s1, s2, ..., sk.

If there are multiple possible answers, print any of them.

Examples

Input

1
abca


Output

YES
abca


Input

2
aaacas


Output

YES
aaa
cas


Input

4
abc


Output

NO

Note

In the second sample there are two possible answers: {"aaaca", "s"} and {"aaa", "cas"}.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.TreeSet;

public class Main {

    public static void main(String[] args) throws IOException {
        Reader.init(System.in);
        int n=Reader.nextInt();
        String q=Reader.next();

        if (n==1) {
            System.out.println("YES");
            System.out.println(q);
            return;
        }
        if (q.length()==1){
            System.out.println("NO");
            return;
        }
        
        ArrayList<String> str=new ArrayList<String>();
        TreeSet<Character> set=new TreeSet<Character>();
        
        int m=0;
        char[] chars=q.toCharArray();
        String temp=Character.toString(q.charAt(0));
        char tch=q.charAt(0);
        set.add(tch);
        for(int i=1;i<chars.length;i++){
            if (!set.contains(chars[i])) {
                str.add(temp);
                set.add(chars[i]);
                m++;
                tch=chars[i];
                temp=Character.toString(tch);
                if (m==n-1||i==chars.length-1) {
                    m++;
                    str.add(q.substring(i));
                    break;
                }
            }
            else{
                temp+=chars[i];
            }
            
            if (i==chars.length-1){
                m++;
                str.add(q.substring(i));
            }
        }
        
        if (n==m) {
            System.out.println("YES");
            for(int i=0;i<m;i++){
                System.out.println(str.get(i));
            }
        }
        else System.out.println("NO");
        
        // TODO Auto-generated method stub

    }

}

class Reader {
    static BufferedReader reader;
    static StringTokenizer tokenizer;

    /** call this method to initialize reader for InputStream */
    static void init(InputStream input) {
        reader = new BufferedReader(
                     new InputStreamReader(input) );
        tokenizer = new StringTokenizer("");
    }

    /** get next word */
    static String next() throws IOException {
        while ( ! tokenizer.hasMoreTokens() ) {
            //TODO add check for eof if necessary
            tokenizer = new StringTokenizer(
                   reader.readLine() );
        }
        return tokenizer.nextToken();
    }

    static int nextInt() throws IOException {
        return Integer.parseInt( next() );
    }
    
    static double nextDouble() throws IOException {
        return Double.parseDouble( next() );
    }
}

