You are given n strings. Each string consists of lowercase English letters. Rearrange (reorder) the given strings in such a way that for every string, all strings that are placed before it are its substrings.

String a is a substring of string b if it is possible to choose several consecutive letters in b in such a way that they form a. For example, string "for" is contained as a substring in strings "codeforces", "for" and "therefore", but is not contained as a substring in strings "four", "fofo" and "rof".

Input

The first line contains an integer n (1 ≤ n ≤ 100) — the number of strings.

The next n lines contain the given strings. The number of letters in each string is from 1 to 100, inclusive. Each string consists of lowercase English letters.

Some strings might be equal.

Output

If it is impossible to reorder n given strings in required order, print "NO" (without quotes).

Otherwise print "YES" (without quotes) and n given strings in required order.

Examples

Input

5
a
aba
abacaba
ba
aba


Output

YES
a
ba
aba
aba
abacaba


Input

5
a
abacaba
ba
aba
abab


Output

NO


Input

3
qwerty
qwerty
qwerty


Output

YES
qwerty
qwerty
qwerty

Note

In the second example you cannot reorder the strings because the string "abab" is not a substring of the string "abacaba".
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

import static java.lang.StrictMath.min;


public class Main {
    public static void main(String[] args) {
        List<Pair> pairs = new ArrayList<>();

        Scanner inpt = new Scanner(System.in);

        int n = inpt.nextInt();
        String st;
        for (int i = 0; i < n; i ++) {
            st = inpt.next();
            pairs.add(new Pair(st.length(),st));
        }

        Collections.sort(pairs);

        for (int i = 0; i < pairs.size() - 1; i ++) {
            if (!is_substring(pairs.get(i).st,pairs.get(i + 1).st)) {
                System.out.println("NO");
                return;
            }
        }
        System.out.println("YES");
        for (int i = 0; i < pairs.size(); i ++) {
            System.out.println(pairs.get(i).st);
        }

    }

    static boolean is_substring(String st1, String st2) {
        //System.out.println(st1 + " " + st2);
        int k = 0;
        for (int i = 0; i < st2.length(); i ++) {
            if (st1.charAt(0) == st2.charAt(i)) {

                int cnt = 0;
                for (int j = i; j < min(i + st1.length(),st2.length()); j ++) {
                    if (st1.charAt(cnt) == st2.charAt(j)) {
                        k++;
                        if (k == st1.length()) {
                            return true;
                        }
                    }
                    cnt ++;
                }
                cnt = 0;
                k = 0;
            }
        }
        return false;
    }
}

class Pair implements Comparable<Pair>{

    int length;
    String st;

    public Pair(int length, String st) {
        this.length = length;
        this.st = st;
    }

    @Override
    public int compareTo(Pair o) {
        if (o.length > length) {
            return -1;
        } else {
            return 1;
        }
    }
}
