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.Scanner;
public class Substring{
public static void main(String args[]){
int n;
int x=0;
int temp;
Scanner a=new Scanner(System.in);
n=a.nextInt();
int d[] = new int[n];
String str[]=new String[n];
String strr[]=new String[n];
for(int i=0;i<n;i++){
str[i]=a.next();
}
for(int j=0;j<n;j++){
d[j]=str[j].length();
}
for(int h=0;h<n-1;h++){
for(int k=0;k<n-h-1;k++){
if(d[k]>d[k+1]){
temp=d[k];
d[k]=d[k+1];
d[k+1]=temp;
}
}
}
for(int e=1;e<=d[n-1];e++){
for(int y=0;y<n;y++){
if(str[y].length()==e){
strr[x]=str[y];
x++;
}
}

}
for(int z=0;z<n-1;z++){
if((strr[z+1].contains(strr[z]))==true){

}
else{
System.out.println("NO");
System.exit(0);
}
}
System.out.println("YES");
for(int u=0;u<n;u++){
System.out.println(strr[u]);
}






}
}