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".
# cook your dish here
#import sys
#sys.setrecursionlimit(10**9) 
ll=lambda:map(int,input().split())
t=lambda:int(input())
ss=lambda:input()
lx=lambda x:map(int,input().split(x))
yy=lambda:print("YES")
nn=lambda:print("NO")

from math import log10 ,log2,ceil,factorial as fac,gcd,inf,sqrt,log
#from itertools import combinations_with_replacement as cs 
#from functools import reduce
from bisect import bisect_right as br,bisect_left as bl
from collections import Counter
#from math import inf


mod=10**9+7


            
#for _ in range(t()):
def f():
    
    
    n=t()

    l={}
    d=[]
    for i in range(n):
        q=ss()
        if len(q) not in l:
            l[len(q)]=[]
        l[len(q)].append(q)
    last=1
    fl=0
    x=0
    for i in sorted(l):
        if last==1:
            last=l[i][0]
            fl=1
        else:
            fl=0
        for j in range(fl,len(l[i])):
            
            if last not in l[i][j]:
                x=1
                break
            last=l[i][j]
        if x:
            nn()
            break
    else:
        yy()
        for i in sorted(l):
            for j in l[i]:
                print(j)
    
            
    
            
    
   

    
    

    

    
    
        
        
    
f()
    

'''

baca

bac
1 2 3
baaccca

abbaccccaba
 
'''
