import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		String[] W = new String[N];
		for(int i = 0; i < N; i++) {
			W[i] = scan.next();
		}

		if (kaburi(W)) {
			System.out.println("No");
			return;
		}

		for (int i= 0; i < W.length-1; i++) {
			if(!W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1))) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");
	}

	public static boolean kaburi(String[] W) {
		for (int i = 0; i < W.length-1; i++) {
			for (int j = i+1; j < W.length; j++) {
				if (W[i].equals(W[j])) {
					return true;
				}
			}
		}
		return false;
	}
} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		String[] W = new String[N];
		for(int i = 0; i < N; i++) {
			W[i] = scan.next();
		}

		if (kaburi(W)) {
			System.out.println("No");
			return;
		}

		for (int i= 0; i < W.length-1; i++) {
			if(!W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1))) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");
	}

	public static boolean kaburi(String[] W) {
		for (int i = 0; i < W.length-1; i++) {
			for (int j = i+1; j < W.length; j++) {
				if (W[i].equals(W[j])) {
					return true;
				}
			}
		}
		return false;
	}
} Main public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		String[] W = new String[N];
		for(int i = 0; i < N; i++) {
			W[i] = scan.next();
		}

		if (kaburi(W)) {
			System.out.println("No");
			return;
		}

		for (int i= 0; i < W.length-1; i++) {
			if(!W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1))) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");
	} main {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		String[] W = new String[N];
		for(int i = 0; i < N; i++) {
			W[i] = scan.next();
		}

		if (kaburi(W)) {
			System.out.println("No");
			return;
		}

		for (int i= 0; i < W.length-1; i++) {
			if(!W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1))) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");
	} Scanner scan = new Scanner(System.in); scan new Scanner(System.in) int N = scan.nextInt(); N scan.nextInt() scan.nextInt scan String[] W = new String[N]; W new String[N] N for(int i = 0; i < N; i++) {
			W[i] = scan.next();
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			W[i] = scan.next();
		} {
			W[i] = scan.next();
		} W[i] = scan.next() W[i] W i scan.next() scan.next scan if (kaburi(W)) {
			System.out.println("No");
			return;
		} kaburi(W) kaburi W {
			System.out.println("No");
			return;
		} System.out.println("No") System.out.println System.out System System.out "No" return; for (int i= 0; i < W.length-1; i++) {
			if(!W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1))) {
				System.out.println("No");
				return;
			}
		} int i= 0; int i= 0; i 0 i < W.length-1 i W.length-1 W.length W W.length 1 i++ i++ i {
			if(!W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1))) {
				System.out.println("No");
				return;
			}
		} {
			if(!W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1))) {
				System.out.println("No");
				return;
			}
		} if(!W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1))) {
				System.out.println("No");
				return;
			} !W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1)) W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1)) W[i].substring(W[i].length()-1).equals W[i].substring(W[i].length()-1) W[i].substring W[i] W i W[i].length()-1 W[i].length() W[i].length W[i] W i 1 W[i+1].substring(0,1) W[i+1].substring W[i+1] W i+1 i 1 0 1 {
				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 static boolean kaburi(String[] W) {
		for (int i = 0; i < W.length-1; i++) {
			for (int j = i+1; j < W.length; j++) {
				if (W[i].equals(W[j])) {
					return true;
				}
			}
		}
		return false;
	} kaburi {
		for (int i = 0; i < W.length-1; i++) {
			for (int j = i+1; j < W.length; j++) {
				if (W[i].equals(W[j])) {
					return true;
				}
			}
		}
		return false;
	} for (int i = 0; i < W.length-1; i++) {
			for (int j = i+1; j < W.length; j++) {
				if (W[i].equals(W[j])) {
					return true;
				}
			}
		} int i = 0; int i = 0; i 0 i < W.length-1 i W.length-1 W.length W W.length 1 i++ i++ i {
			for (int j = i+1; j < W.length; j++) {
				if (W[i].equals(W[j])) {
					return true;
				}
			}
		} {
			for (int j = i+1; j < W.length; j++) {
				if (W[i].equals(W[j])) {
					return true;
				}
			}
		} for (int j = i+1; j < W.length; j++) {
				if (W[i].equals(W[j])) {
					return true;
				}
			} int j = i+1; int j = i+1; j i+1 i 1 j < W.length j W.length W W.length j++ j++ j {
				if (W[i].equals(W[j])) {
					return true;
				}
			} {
				if (W[i].equals(W[j])) {
					return true;
				}
			} if (W[i].equals(W[j])) {
					return true;
				} W[i].equals(W[j]) W[i].equals W[i] W i W[j] W j {
					return true;
				} return true; true return false; false String[] W W public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		String[] W = new String[N];
		for(int i = 0; i < N; i++) {
			W[i] = scan.next();
		}

		if (kaburi(W)) {
			System.out.println("No");
			return;
		}

		for (int i= 0; i < W.length-1; i++) {
			if(!W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1))) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");
	}

	public static boolean kaburi(String[] W) {
		for (int i = 0; i < W.length-1; i++) {
			for (int j = i+1; j < W.length; j++) {
				if (W[i].equals(W[j])) {
					return true;
				}
			}
		}
		return false;
	}
} public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		String[] W = new String[N];
		for(int i = 0; i < N; i++) {
			W[i] = scan.next();
		}

		if (kaburi(W)) {
			System.out.println("No");
			return;
		}

		for (int i= 0; i < W.length-1; i++) {
			if(!W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1))) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");
	}

	public static boolean kaburi(String[] W) {
		for (int i = 0; i < W.length-1; i++) {
			for (int j = i+1; j < W.length; j++) {
				if (W[i].equals(W[j])) {
					return true;
				}
			}
		}
		return false;
	}
} Main
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		String[] W = new String[N];
		for(int i = 0; i < N; i++) {
			W[i] = scan.next();
		}

		if (kaburi(W)) {
			System.out.println("No");
			return;
		}

		for (int i= 0; i < W.length-1; i++) {
			if(!W[i].substring(W[i].length()-1).equals(W[i+1].substring(0,1))) {
				System.out.println("No");
				return;
			}
		}

		System.out.println("Yes");
	}

	public static boolean kaburi(String[] W) {
		for (int i = 0; i < W.length-1; i++) {
			for (int j = i+1; j < W.length; j++) {
				if (W[i].equals(W[j])) {
					return true;
				}
			}
		}
		return false;
	}
}
