import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		ArrayList<String> list = new ArrayList<String>();
		ArrayList<String> listFirst = new ArrayList<String>();
		ArrayList<String> listLast = new ArrayList<String>();
		boolean ng = false;
		
		for (int i = 0; i < N; i++) {
			String w = sc.next();
			if (!ng){
				ng = list.contains(w);				
			}
			list.add(w);
			listFirst.add(w.substring(0,1));
			listLast.add(w.substring(w.length()-1));
		}
		if (ng) {
			System.out.println("No");									
			return;
		}
		for (int i = 1; i < N; i++) {
			String f = listLast.get(i-1);
			String l = listFirst.get(i);
			if (!f.equals(l)) {
				ng = true;
				break;
			}
		}
		if(ng){
			System.out.println("No");						
		} else {
			System.out.println("Yes");						
		}
		
		
		// 入力
		/*
		String S = sc.next();                
		String T = sc.next();                
		
		for (int i = 0; i < S.length(); i++) {
			if (!S.substring(i,i+1).equals(T.substring(i,i+1))) {
				if (S.indexOf(T.substring(i,i+1)) == -1) {
					S = S.replace(S.substring(i,i+1), T.substring(i,i+1));
				} else {
					String s = S.substring(0, S.length());
					StringBuilder sb = new StringBuilder("");
					for (int j = 0; j < s.length(); j++) {
						if (s.substring(j, j+1).equals(S.substring(i, i+1))) {
							sb.append(T.substring(i, i+1));
						} else if (s.substring(j, j+1).equals(T.substring(i, i+1))) {
							sb.append(S.substring(i, i+1));							
						} else {
							sb.append(s.substring(j, j+1)); 
						}
					}
					S = sb.toString();
				}
			}
		}
		if(S.equals(T)){
			System.out.println("Yes");			
		} else {
			System.out.println("No");			
		}
	*/
	}	
} import java.util.*; util.* java public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		ArrayList<String> list = new ArrayList<String>();
		ArrayList<String> listFirst = new ArrayList<String>();
		ArrayList<String> listLast = new ArrayList<String>();
		boolean ng = false;
		
		for (int i = 0; i < N; i++) {
			String w = sc.next();
			if (!ng){
				ng = list.contains(w);				
			}
			list.add(w);
			listFirst.add(w.substring(0,1));
			listLast.add(w.substring(w.length()-1));
		}
		if (ng) {
			System.out.println("No");									
			return;
		}
		for (int i = 1; i < N; i++) {
			String f = listLast.get(i-1);
			String l = listFirst.get(i);
			if (!f.equals(l)) {
				ng = true;
				break;
			}
		}
		if(ng){
			System.out.println("No");						
		} else {
			System.out.println("Yes");						
		}
		
		
		// 入力
		/*
		String S = sc.next();                
		String T = sc.next();                
		
		for (int i = 0; i < S.length(); i++) {
			if (!S.substring(i,i+1).equals(T.substring(i,i+1))) {
				if (S.indexOf(T.substring(i,i+1)) == -1) {
					S = S.replace(S.substring(i,i+1), T.substring(i,i+1));
				} else {
					String s = S.substring(0, S.length());
					StringBuilder sb = new StringBuilder("");
					for (int j = 0; j < s.length(); j++) {
						if (s.substring(j, j+1).equals(S.substring(i, i+1))) {
							sb.append(T.substring(i, i+1));
						} else if (s.substring(j, j+1).equals(T.substring(i, i+1))) {
							sb.append(S.substring(i, i+1));							
						} else {
							sb.append(s.substring(j, j+1)); 
						}
					}
					S = sb.toString();
				}
			}
		}
		if(S.equals(T)){
			System.out.println("Yes");			
		} else {
			System.out.println("No");			
		}
	*/
	}	
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		ArrayList<String> list = new ArrayList<String>();
		ArrayList<String> listFirst = new ArrayList<String>();
		ArrayList<String> listLast = new ArrayList<String>();
		boolean ng = false;
		
		for (int i = 0; i < N; i++) {
			String w = sc.next();
			if (!ng){
				ng = list.contains(w);				
			}
			list.add(w);
			listFirst.add(w.substring(0,1));
			listLast.add(w.substring(w.length()-1));
		}
		if (ng) {
			System.out.println("No");									
			return;
		}
		for (int i = 1; i < N; i++) {
			String f = listLast.get(i-1);
			String l = listFirst.get(i);
			if (!f.equals(l)) {
				ng = true;
				break;
			}
		}
		if(ng){
			System.out.println("No");						
		} else {
			System.out.println("Yes");						
		}
		
		
		// 入力
		/*
		String S = sc.next();                
		String T = sc.next();                
		
		for (int i = 0; i < S.length(); i++) {
			if (!S.substring(i,i+1).equals(T.substring(i,i+1))) {
				if (S.indexOf(T.substring(i,i+1)) == -1) {
					S = S.replace(S.substring(i,i+1), T.substring(i,i+1));
				} else {
					String s = S.substring(0, S.length());
					StringBuilder sb = new StringBuilder("");
					for (int j = 0; j < s.length(); j++) {
						if (s.substring(j, j+1).equals(S.substring(i, i+1))) {
							sb.append(T.substring(i, i+1));
						} else if (s.substring(j, j+1).equals(T.substring(i, i+1))) {
							sb.append(S.substring(i, i+1));							
						} else {
							sb.append(s.substring(j, j+1)); 
						}
					}
					S = sb.toString();
				}
			}
		}
		if(S.equals(T)){
			System.out.println("Yes");			
		} else {
			System.out.println("No");			
		}
	*/
	} main {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		ArrayList<String> list = new ArrayList<String>();
		ArrayList<String> listFirst = new ArrayList<String>();
		ArrayList<String> listLast = new ArrayList<String>();
		boolean ng = false;
		
		for (int i = 0; i < N; i++) {
			String w = sc.next();
			if (!ng){
				ng = list.contains(w);				
			}
			list.add(w);
			listFirst.add(w.substring(0,1));
			listLast.add(w.substring(w.length()-1));
		}
		if (ng) {
			System.out.println("No");									
			return;
		}
		for (int i = 1; i < N; i++) {
			String f = listLast.get(i-1);
			String l = listFirst.get(i);
			if (!f.equals(l)) {
				ng = true;
				break;
			}
		}
		if(ng){
			System.out.println("No");						
		} else {
			System.out.println("Yes");						
		}
		
		
		// 入力
		/*
		String S = sc.next();                
		String T = sc.next();                
		
		for (int i = 0; i < S.length(); i++) {
			if (!S.substring(i,i+1).equals(T.substring(i,i+1))) {
				if (S.indexOf(T.substring(i,i+1)) == -1) {
					S = S.replace(S.substring(i,i+1), T.substring(i,i+1));
				} else {
					String s = S.substring(0, S.length());
					StringBuilder sb = new StringBuilder("");
					for (int j = 0; j < s.length(); j++) {
						if (s.substring(j, j+1).equals(S.substring(i, i+1))) {
							sb.append(T.substring(i, i+1));
						} else if (s.substring(j, j+1).equals(T.substring(i, i+1))) {
							sb.append(S.substring(i, i+1));							
						} else {
							sb.append(s.substring(j, j+1)); 
						}
					}
					S = sb.toString();
				}
			}
		}
		if(S.equals(T)){
			System.out.println("Yes");			
		} else {
			System.out.println("No");			
		}
	*/
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int N = sc.nextInt(); N sc.nextInt() sc.nextInt sc ArrayList<String> list = new ArrayList<String>(); list new ArrayList<String>() ArrayList<String> listFirst = new ArrayList<String>(); listFirst new ArrayList<String>() ArrayList<String> listLast = new ArrayList<String>(); listLast new ArrayList<String>() boolean ng = false; ng false for (int i = 0; i < N; i++) {
			String w = sc.next();
			if (!ng){
				ng = list.contains(w);				
			}
			list.add(w);
			listFirst.add(w.substring(0,1));
			listLast.add(w.substring(w.length()-1));
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			String w = sc.next();
			if (!ng){
				ng = list.contains(w);				
			}
			list.add(w);
			listFirst.add(w.substring(0,1));
			listLast.add(w.substring(w.length()-1));
		} {
			String w = sc.next();
			if (!ng){
				ng = list.contains(w);				
			}
			list.add(w);
			listFirst.add(w.substring(0,1));
			listLast.add(w.substring(w.length()-1));
		} String w = sc.next(); w sc.next() sc.next sc if (!ng){
				ng = list.contains(w);				
			} !ng ng {
				ng = list.contains(w);				
			} ng = list.contains(w) ng list.contains(w) list.contains list w list.add(w) list.add list w listFirst.add(w.substring(0,1)) listFirst.add listFirst w.substring(0,1) w.substring w 0 1 listLast.add(w.substring(w.length()-1)) listLast.add listLast w.substring(w.length()-1) w.substring w w.length()-1 w.length() w.length w 1 if (ng) {
			System.out.println("No");									
			return;
		} ng {
			System.out.println("No");									
			return;
		} System.out.println("No") System.out.println System.out System System.out "No" return; for (int i = 1; i < N; i++) {
			String f = listLast.get(i-1);
			String l = listFirst.get(i);
			if (!f.equals(l)) {
				ng = true;
				break;
			}
		} int i = 1; int i = 1; i 1 i < N i N i++ i++ i {
			String f = listLast.get(i-1);
			String l = listFirst.get(i);
			if (!f.equals(l)) {
				ng = true;
				break;
			}
		} {
			String f = listLast.get(i-1);
			String l = listFirst.get(i);
			if (!f.equals(l)) {
				ng = true;
				break;
			}
		} String f = listLast.get(i-1); f listLast.get(i-1) listLast.get listLast i-1 i 1 String l = listFirst.get(i); l listFirst.get(i) listFirst.get listFirst i if (!f.equals(l)) {
				ng = true;
				break;
			} !f.equals(l) f.equals(l) f.equals f l {
				ng = true;
				break;
			} ng = true ng true break; if(ng){
			System.out.println("No");						
		} else {
			System.out.println("Yes");						
		} ng {
			System.out.println("No");						
		} System.out.println("No") System.out.println System.out System System.out "No" {
			System.out.println("Yes");						
		} 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) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		ArrayList<String> list = new ArrayList<String>();
		ArrayList<String> listFirst = new ArrayList<String>();
		ArrayList<String> listLast = new ArrayList<String>();
		boolean ng = false;
		
		for (int i = 0; i < N; i++) {
			String w = sc.next();
			if (!ng){
				ng = list.contains(w);				
			}
			list.add(w);
			listFirst.add(w.substring(0,1));
			listLast.add(w.substring(w.length()-1));
		}
		if (ng) {
			System.out.println("No");									
			return;
		}
		for (int i = 1; i < N; i++) {
			String f = listLast.get(i-1);
			String l = listFirst.get(i);
			if (!f.equals(l)) {
				ng = true;
				break;
			}
		}
		if(ng){
			System.out.println("No");						
		} else {
			System.out.println("Yes");						
		}
		
		
		// 入力
		/*
		String S = sc.next();                
		String T = sc.next();                
		
		for (int i = 0; i < S.length(); i++) {
			if (!S.substring(i,i+1).equals(T.substring(i,i+1))) {
				if (S.indexOf(T.substring(i,i+1)) == -1) {
					S = S.replace(S.substring(i,i+1), T.substring(i,i+1));
				} else {
					String s = S.substring(0, S.length());
					StringBuilder sb = new StringBuilder("");
					for (int j = 0; j < s.length(); j++) {
						if (s.substring(j, j+1).equals(S.substring(i, i+1))) {
							sb.append(T.substring(i, i+1));
						} else if (s.substring(j, j+1).equals(T.substring(i, i+1))) {
							sb.append(S.substring(i, i+1));							
						} else {
							sb.append(s.substring(j, j+1)); 
						}
					}
					S = sb.toString();
				}
			}
		}
		if(S.equals(T)){
			System.out.println("Yes");			
		} else {
			System.out.println("No");			
		}
	*/
	}	
} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		ArrayList<String> list = new ArrayList<String>();
		ArrayList<String> listFirst = new ArrayList<String>();
		ArrayList<String> listLast = new ArrayList<String>();
		boolean ng = false;
		
		for (int i = 0; i < N; i++) {
			String w = sc.next();
			if (!ng){
				ng = list.contains(w);				
			}
			list.add(w);
			listFirst.add(w.substring(0,1));
			listLast.add(w.substring(w.length()-1));
		}
		if (ng) {
			System.out.println("No");									
			return;
		}
		for (int i = 1; i < N; i++) {
			String f = listLast.get(i-1);
			String l = listFirst.get(i);
			if (!f.equals(l)) {
				ng = true;
				break;
			}
		}
		if(ng){
			System.out.println("No");						
		} else {
			System.out.println("Yes");						
		}
		
		
		// 入力
		/*
		String S = sc.next();                
		String T = sc.next();                
		
		for (int i = 0; i < S.length(); i++) {
			if (!S.substring(i,i+1).equals(T.substring(i,i+1))) {
				if (S.indexOf(T.substring(i,i+1)) == -1) {
					S = S.replace(S.substring(i,i+1), T.substring(i,i+1));
				} else {
					String s = S.substring(0, S.length());
					StringBuilder sb = new StringBuilder("");
					for (int j = 0; j < s.length(); j++) {
						if (s.substring(j, j+1).equals(S.substring(i, i+1))) {
							sb.append(T.substring(i, i+1));
						} else if (s.substring(j, j+1).equals(T.substring(i, i+1))) {
							sb.append(S.substring(i, i+1));							
						} else {
							sb.append(s.substring(j, j+1)); 
						}
					}
					S = sb.toString();
				}
			}
		}
		if(S.equals(T)){
			System.out.println("Yes");			
		} else {
			System.out.println("No");			
		}
	*/
	}	
} Main
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		ArrayList<String> list = new ArrayList<String>();
		ArrayList<String> listFirst = new ArrayList<String>();
		ArrayList<String> listLast = new ArrayList<String>();
		boolean ng = false;
		
		for (int i = 0; i < N; i++) {
			String w = sc.next();
			if (!ng){
				ng = list.contains(w);				
			}
			list.add(w);
			listFirst.add(w.substring(0,1));
			listLast.add(w.substring(w.length()-1));
		}
		if (ng) {
			System.out.println("No");									
			return;
		}
		for (int i = 1; i < N; i++) {
			String f = listLast.get(i-1);
			String l = listFirst.get(i);
			if (!f.equals(l)) {
				ng = true;
				break;
			}
		}
		if(ng){
			System.out.println("No");						
		} else {
			System.out.println("Yes");						
		}
		
		
		// 入力
		/*
		String S = sc.next();                
		String T = sc.next();                
		
		for (int i = 0; i < S.length(); i++) {
			if (!S.substring(i,i+1).equals(T.substring(i,i+1))) {
				if (S.indexOf(T.substring(i,i+1)) == -1) {
					S = S.replace(S.substring(i,i+1), T.substring(i,i+1));
				} else {
					String s = S.substring(0, S.length());
					StringBuilder sb = new StringBuilder("");
					for (int j = 0; j < s.length(); j++) {
						if (s.substring(j, j+1).equals(S.substring(i, i+1))) {
							sb.append(T.substring(i, i+1));
						} else if (s.substring(j, j+1).equals(T.substring(i, i+1))) {
							sb.append(S.substring(i, i+1));							
						} else {
							sb.append(s.substring(j, j+1)); 
						}
					}
					S = sb.toString();
				}
			}
		}
		if(S.equals(T)){
			System.out.println("Yes");			
		} else {
			System.out.println("No");			
		}
	*/
	}	
}
