import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {

        // 宣言・値の格納
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        String[] W = new String[N];
        char wLast;
        char wFirst;
        
        W[0] = sc.next();
        
        // 頭と末尾の一致判定
        for(int i = 0; i < N-1; i++){
            W[i+1] = sc.next();
            wFirst = W[i].charAt(W[i].length()-1);
            wLast = W[i+1].charAt(0);
            
                // 一致しない場合
                if(!(wFirst == wLast)){
                    System.out.println("No");
                    return;
                }
        }
        
        // 新規の単語かの判定
        for(int i = 0; i < N; i++){
            for(int j = 0; j < i; j++){
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            }
        }

        // 規則を順守している場合
        System.out.println("Yes");

    }
} import java.util.*; util.* java public class Main {
    public static void main(String[] args) throws Exception {

        // 宣言・値の格納
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        String[] W = new String[N];
        char wLast;
        char wFirst;
        
        W[0] = sc.next();
        
        // 頭と末尾の一致判定
        for(int i = 0; i < N-1; i++){
            W[i+1] = sc.next();
            wFirst = W[i].charAt(W[i].length()-1);
            wLast = W[i+1].charAt(0);
            
                // 一致しない場合
                if(!(wFirst == wLast)){
                    System.out.println("No");
                    return;
                }
        }
        
        // 新規の単語かの判定
        for(int i = 0; i < N; i++){
            for(int j = 0; j < i; j++){
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            }
        }

        // 規則を順守している場合
        System.out.println("Yes");

    }
} Main public static void main(String[] args) throws Exception {

        // 宣言・値の格納
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        String[] W = new String[N];
        char wLast;
        char wFirst;
        
        W[0] = sc.next();
        
        // 頭と末尾の一致判定
        for(int i = 0; i < N-1; i++){
            W[i+1] = sc.next();
            wFirst = W[i].charAt(W[i].length()-1);
            wLast = W[i+1].charAt(0);
            
                // 一致しない場合
                if(!(wFirst == wLast)){
                    System.out.println("No");
                    return;
                }
        }
        
        // 新規の単語かの判定
        for(int i = 0; i < N; i++){
            for(int j = 0; j < i; j++){
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            }
        }

        // 規則を順守している場合
        System.out.println("Yes");

    } main {

        // 宣言・値の格納
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        String[] W = new String[N];
        char wLast;
        char wFirst;
        
        W[0] = sc.next();
        
        // 頭と末尾の一致判定
        for(int i = 0; i < N-1; i++){
            W[i+1] = sc.next();
            wFirst = W[i].charAt(W[i].length()-1);
            wLast = W[i+1].charAt(0);
            
                // 一致しない場合
                if(!(wFirst == wLast)){
                    System.out.println("No");
                    return;
                }
        }
        
        // 新規の単語かの判定
        for(int i = 0; i < N; i++){
            for(int j = 0; j < i; j++){
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            }
        }

        // 規則を順守している場合
        System.out.println("Yes");

    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc String[] W = new String[N]; W new String[N] N char wLast; wLast char wFirst; wFirst W[0] = sc.next() W[0] W 0 sc.next() sc.next sc for(int i = 0; i < N-1; i++){
            W[i+1] = sc.next();
            wFirst = W[i].charAt(W[i].length()-1);
            wLast = W[i+1].charAt(0);
            
                // 一致しない場合
                if(!(wFirst == wLast)){
                    System.out.println("No");
                    return;
                }
        } int i = 0; int i = 0; i 0 i < N-1 i N-1 N 1 i++ i++ i {
            W[i+1] = sc.next();
            wFirst = W[i].charAt(W[i].length()-1);
            wLast = W[i+1].charAt(0);
            
                // 一致しない場合
                if(!(wFirst == wLast)){
                    System.out.println("No");
                    return;
                }
        } {
            W[i+1] = sc.next();
            wFirst = W[i].charAt(W[i].length()-1);
            wLast = W[i+1].charAt(0);
            
                // 一致しない場合
                if(!(wFirst == wLast)){
                    System.out.println("No");
                    return;
                }
        } W[i+1] = sc.next() W[i+1] W i+1 i 1 sc.next() sc.next sc wFirst = W[i].charAt(W[i].length()-1) wFirst W[i].charAt(W[i].length()-1) W[i].charAt W[i] W i W[i].length()-1 W[i].length() W[i].length W[i] W i 1 wLast = W[i+1].charAt(0) wLast W[i+1].charAt(0) W[i+1].charAt W[i+1] W i+1 i 1 0 if(!(wFirst == wLast)){
                    System.out.println("No");
                    return;
                } !(wFirst == wLast) (wFirst == wLast) wFirst wLast {
                    System.out.println("No");
                    return;
                } System.out.println("No") System.out.println System.out System System.out "No" return; for(int i = 0; i < N; i++){
            for(int j = 0; j < i; j++){
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            }
        } int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
            for(int j = 0; j < i; j++){
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            }
        } {
            for(int j = 0; j < i; j++){
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            }
        } for(int j = 0; j < i; j++){
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            } int j = 0; int j = 0; j 0 j < i j i j++ j++ j {
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            } {
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            } if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                } W[i].equals(W[j]) W[i].equals W[i] W i W[j] W j {
                    System.out.println("No");
                    return;
                } System.out.println("No") System.out.println System.out System System.out "No" return; System.out.println("Yes") System.out.println System.out System System.out "Yes" String[] args args public class Main {
    public static void main(String[] args) throws Exception {

        // 宣言・値の格納
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        String[] W = new String[N];
        char wLast;
        char wFirst;
        
        W[0] = sc.next();
        
        // 頭と末尾の一致判定
        for(int i = 0; i < N-1; i++){
            W[i+1] = sc.next();
            wFirst = W[i].charAt(W[i].length()-1);
            wLast = W[i+1].charAt(0);
            
                // 一致しない場合
                if(!(wFirst == wLast)){
                    System.out.println("No");
                    return;
                }
        }
        
        // 新規の単語かの判定
        for(int i = 0; i < N; i++){
            for(int j = 0; j < i; j++){
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            }
        }

        // 規則を順守している場合
        System.out.println("Yes");

    }
} public class Main {
    public static void main(String[] args) throws Exception {

        // 宣言・値の格納
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        String[] W = new String[N];
        char wLast;
        char wFirst;
        
        W[0] = sc.next();
        
        // 頭と末尾の一致判定
        for(int i = 0; i < N-1; i++){
            W[i+1] = sc.next();
            wFirst = W[i].charAt(W[i].length()-1);
            wLast = W[i+1].charAt(0);
            
                // 一致しない場合
                if(!(wFirst == wLast)){
                    System.out.println("No");
                    return;
                }
        }
        
        // 新規の単語かの判定
        for(int i = 0; i < N; i++){
            for(int j = 0; j < i; j++){
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            }
        }

        // 規則を順守している場合
        System.out.println("Yes");

    }
} Main
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {

        // 宣言・値の格納
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        String[] W = new String[N];
        char wLast;
        char wFirst;
        
        W[0] = sc.next();
        
        // 頭と末尾の一致判定
        for(int i = 0; i < N-1; i++){
            W[i+1] = sc.next();
            wFirst = W[i].charAt(W[i].length()-1);
            wLast = W[i+1].charAt(0);
            
                // 一致しない場合
                if(!(wFirst == wLast)){
                    System.out.println("No");
                    return;
                }
        }
        
        // 新規の単語かの判定
        for(int i = 0; i < N; i++){
            for(int j = 0; j < i; j++){
                
                //新規でない場合 
                if(W[i].equals(W[j])){
                    System.out.println("No");
                    return;
                }
            }
        }

        // 規則を順守している場合
        System.out.println("Yes");

    }
}
