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".
def get_prefix_arr(pattern, b):
   prefix_arr = [0] * b
   n=0
   m=1
   while m!=b:
      if pattern[m]==pattern[n]:
         n+=1
         prefix_arr[m]=n
         m+=1
      elif n!=0:
         n=prefix_arr[n-1]
      else:
         prefix_arr[m]=0
         m+=1
   return prefix_arr

def KMPSearch(pat, txt): 
   M = len(pat) 
   N = len(txt)
   lps=get_prefix_arr(pat,M)
   j=0
   i=0
   while i < N: 
      if pat[j] == txt[i]: 
         i += 1
         j += 1
      if j == M: 
            # print ("Found pattern at index " + str(i-j))
         j = lps[j-1] 
         return 1
      elif i < N and pat[j] != txt[i]: 
         if j != 0: 
            j = lps[j-1] 
         else: 
            i += 1
   return 0

def sort(lst,n):
   for i in range(n):
      md=i
      for j in range(i+1,n):
         if KMPSearch(lst[md],lst[j])==0:
            if KMPSearch(lst[j],lst[md])==0:
               return "NO"
            md=j
      lst[md],lst[i]=lst[i],lst[md]
   return "YES"

if __name__=='__main__':
   n=int(input())
   lst=[]
   for i in range(n):
      s=input()
      lst.append(s)
   x=sort(lst,n)
   print(x)
   if x=="YES":
      for i in range(n):
         print(lst[i])