import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ

		Scanner sc1 = new Scanner(System.in);

		int n = sc1.nextInt();
		String[] str = new String[n];

		for ( int i = 0 ; i < n ; i++ ) {
			str[i] = sc1.next();
		}

		String bef_word = str[0];
		String aft_word;

		char last = bef_word.charAt(bef_word.length() - 1);
		char first;

		boolean flg = true;

		for ( int i = 1 ; i < n ; i++ ) {
			aft_word = str[i];
			first = aft_word.charAt(0);
			if ( first != last) {
				flg = false;
				//System.out.println(i + " " + aft_word + " " + last + " " + first + " " + "尻取れず");
				break;
			}

			String[] temp_str = new String[i];
			System.arraycopy(str,0,temp_str,0,i);

			if (Arrays.asList(temp_str).contains(aft_word)) {
				flg = false;
				//System.out.println(i + " " + aft_word  + " " + "重複");
				break;
			}

			last = aft_word.charAt(aft_word.length() - 1);;
		}

		if (flg) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}

		sc1.close();

	}

} import java.util.Arrays; Arrays java.util import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ

		Scanner sc1 = new Scanner(System.in);

		int n = sc1.nextInt();
		String[] str = new String[n];

		for ( int i = 0 ; i < n ; i++ ) {
			str[i] = sc1.next();
		}

		String bef_word = str[0];
		String aft_word;

		char last = bef_word.charAt(bef_word.length() - 1);
		char first;

		boolean flg = true;

		for ( int i = 1 ; i < n ; i++ ) {
			aft_word = str[i];
			first = aft_word.charAt(0);
			if ( first != last) {
				flg = false;
				//System.out.println(i + " " + aft_word + " " + last + " " + first + " " + "尻取れず");
				break;
			}

			String[] temp_str = new String[i];
			System.arraycopy(str,0,temp_str,0,i);

			if (Arrays.asList(temp_str).contains(aft_word)) {
				flg = false;
				//System.out.println(i + " " + aft_word  + " " + "重複");
				break;
			}

			last = aft_word.charAt(aft_word.length() - 1);;
		}

		if (flg) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}

		sc1.close();

	}

} Main public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ

		Scanner sc1 = new Scanner(System.in);

		int n = sc1.nextInt();
		String[] str = new String[n];

		for ( int i = 0 ; i < n ; i++ ) {
			str[i] = sc1.next();
		}

		String bef_word = str[0];
		String aft_word;

		char last = bef_word.charAt(bef_word.length() - 1);
		char first;

		boolean flg = true;

		for ( int i = 1 ; i < n ; i++ ) {
			aft_word = str[i];
			first = aft_word.charAt(0);
			if ( first != last) {
				flg = false;
				//System.out.println(i + " " + aft_word + " " + last + " " + first + " " + "尻取れず");
				break;
			}

			String[] temp_str = new String[i];
			System.arraycopy(str,0,temp_str,0,i);

			if (Arrays.asList(temp_str).contains(aft_word)) {
				flg = false;
				//System.out.println(i + " " + aft_word  + " " + "重複");
				break;
			}

			last = aft_word.charAt(aft_word.length() - 1);;
		}

		if (flg) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}

		sc1.close();

	} main {
		// TODO 自動生成されたメソッド・スタブ

		Scanner sc1 = new Scanner(System.in);

		int n = sc1.nextInt();
		String[] str = new String[n];

		for ( int i = 0 ; i < n ; i++ ) {
			str[i] = sc1.next();
		}

		String bef_word = str[0];
		String aft_word;

		char last = bef_word.charAt(bef_word.length() - 1);
		char first;

		boolean flg = true;

		for ( int i = 1 ; i < n ; i++ ) {
			aft_word = str[i];
			first = aft_word.charAt(0);
			if ( first != last) {
				flg = false;
				//System.out.println(i + " " + aft_word + " " + last + " " + first + " " + "尻取れず");
				break;
			}

			String[] temp_str = new String[i];
			System.arraycopy(str,0,temp_str,0,i);

			if (Arrays.asList(temp_str).contains(aft_word)) {
				flg = false;
				//System.out.println(i + " " + aft_word  + " " + "重複");
				break;
			}

			last = aft_word.charAt(aft_word.length() - 1);;
		}

		if (flg) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}

		sc1.close();

	} Scanner sc1 = new Scanner(System.in); sc1 new Scanner(System.in) int n = sc1.nextInt(); n sc1.nextInt() sc1.nextInt sc1 String[] str = new String[n]; str new String[n] n for ( int i = 0 ; i < n ; i++ ) {
			str[i] = sc1.next();
		} int i = 0 ; int i = 0 ; i 0 i < n i n i++ i++ i {
			str[i] = sc1.next();
		} {
			str[i] = sc1.next();
		} str[i] = sc1.next() str[i] str i sc1.next() sc1.next sc1 String bef_word = str[0]; bef_word str[0] str 0 String aft_word; aft_word char last = bef_word.charAt(bef_word.length() - 1); last bef_word.charAt(bef_word.length() - 1) bef_word.charAt bef_word bef_word.length() - 1 bef_word.length() bef_word.length bef_word 1 char first; first boolean flg = true; flg true for ( int i = 1 ; i < n ; i++ ) {
			aft_word = str[i];
			first = aft_word.charAt(0);
			if ( first != last) {
				flg = false;
				//System.out.println(i + " " + aft_word + " " + last + " " + first + " " + "尻取れず");
				break;
			}

			String[] temp_str = new String[i];
			System.arraycopy(str,0,temp_str,0,i);

			if (Arrays.asList(temp_str).contains(aft_word)) {
				flg = false;
				//System.out.println(i + " " + aft_word  + " " + "重複");
				break;
			}

			last = aft_word.charAt(aft_word.length() - 1);;
		} int i = 1 ; int i = 1 ; i 1 i < n i n i++ i++ i {
			aft_word = str[i];
			first = aft_word.charAt(0);
			if ( first != last) {
				flg = false;
				//System.out.println(i + " " + aft_word + " " + last + " " + first + " " + "尻取れず");
				break;
			}

			String[] temp_str = new String[i];
			System.arraycopy(str,0,temp_str,0,i);

			if (Arrays.asList(temp_str).contains(aft_word)) {
				flg = false;
				//System.out.println(i + " " + aft_word  + " " + "重複");
				break;
			}

			last = aft_word.charAt(aft_word.length() - 1);;
		} {
			aft_word = str[i];
			first = aft_word.charAt(0);
			if ( first != last) {
				flg = false;
				//System.out.println(i + " " + aft_word + " " + last + " " + first + " " + "尻取れず");
				break;
			}

			String[] temp_str = new String[i];
			System.arraycopy(str,0,temp_str,0,i);

			if (Arrays.asList(temp_str).contains(aft_word)) {
				flg = false;
				//System.out.println(i + " " + aft_word  + " " + "重複");
				break;
			}

			last = aft_word.charAt(aft_word.length() - 1);;
		} aft_word = str[i] aft_word str[i] str i first = aft_word.charAt(0) first aft_word.charAt(0) aft_word.charAt aft_word 0 if ( first != last) {
				flg = false;
				//System.out.println(i + " " + aft_word + " " + last + " " + first + " " + "尻取れず");
				break;
			} first != last first last {
				flg = false;
				//System.out.println(i + " " + aft_word + " " + last + " " + first + " " + "尻取れず");
				break;
			} flg = false flg false break; String[] temp_str = new String[i]; temp_str new String[i] i System.arraycopy(str,0,temp_str,0,i) System.arraycopy System str 0 temp_str 0 i if (Arrays.asList(temp_str).contains(aft_word)) {
				flg = false;
				//System.out.println(i + " " + aft_word  + " " + "重複");
				break;
			} Arrays.asList(temp_str).contains(aft_word) Arrays.asList(temp_str).contains Arrays.asList(temp_str) Arrays.asList Arrays temp_str aft_word {
				flg = false;
				//System.out.println(i + " " + aft_word  + " " + "重複");
				break;
			} flg = false flg false break; last = aft_word.charAt(aft_word.length() - 1) last aft_word.charAt(aft_word.length() - 1) aft_word.charAt aft_word aft_word.length() - 1 aft_word.length() aft_word.length aft_word 1 if (flg) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		} flg {
			System.out.println("Yes");
		} System.out.println("Yes") System.out.println System.out System System.out "Yes" {
			System.out.println("No");
		} System.out.println("No") System.out.println System.out System System.out "No" sc1.close() sc1.close sc1 String[] args args public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ

		Scanner sc1 = new Scanner(System.in);

		int n = sc1.nextInt();
		String[] str = new String[n];

		for ( int i = 0 ; i < n ; i++ ) {
			str[i] = sc1.next();
		}

		String bef_word = str[0];
		String aft_word;

		char last = bef_word.charAt(bef_word.length() - 1);
		char first;

		boolean flg = true;

		for ( int i = 1 ; i < n ; i++ ) {
			aft_word = str[i];
			first = aft_word.charAt(0);
			if ( first != last) {
				flg = false;
				//System.out.println(i + " " + aft_word + " " + last + " " + first + " " + "尻取れず");
				break;
			}

			String[] temp_str = new String[i];
			System.arraycopy(str,0,temp_str,0,i);

			if (Arrays.asList(temp_str).contains(aft_word)) {
				flg = false;
				//System.out.println(i + " " + aft_word  + " " + "重複");
				break;
			}

			last = aft_word.charAt(aft_word.length() - 1);;
		}

		if (flg) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}

		sc1.close();

	}

} public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ

		Scanner sc1 = new Scanner(System.in);

		int n = sc1.nextInt();
		String[] str = new String[n];

		for ( int i = 0 ; i < n ; i++ ) {
			str[i] = sc1.next();
		}

		String bef_word = str[0];
		String aft_word;

		char last = bef_word.charAt(bef_word.length() - 1);
		char first;

		boolean flg = true;

		for ( int i = 1 ; i < n ; i++ ) {
			aft_word = str[i];
			first = aft_word.charAt(0);
			if ( first != last) {
				flg = false;
				//System.out.println(i + " " + aft_word + " " + last + " " + first + " " + "尻取れず");
				break;
			}

			String[] temp_str = new String[i];
			System.arraycopy(str,0,temp_str,0,i);

			if (Arrays.asList(temp_str).contains(aft_word)) {
				flg = false;
				//System.out.println(i + " " + aft_word  + " " + "重複");
				break;
			}

			last = aft_word.charAt(aft_word.length() - 1);;
		}

		if (flg) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}

		sc1.close();

	}

} Main
import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ

		Scanner sc1 = new Scanner(System.in);

		int n = sc1.nextInt();
		String[] str = new String[n];

		for ( int i = 0 ; i < n ; i++ ) {
			str[i] = sc1.next();
		}

		String bef_word = str[0];
		String aft_word;

		char last = bef_word.charAt(bef_word.length() - 1);
		char first;

		boolean flg = true;

		for ( int i = 1 ; i < n ; i++ ) {
			aft_word = str[i];
			first = aft_word.charAt(0);
			if ( first != last) {
				flg = false;
				//System.out.println(i + " " + aft_word + " " + last + " " + first + " " + "尻取れず");
				break;
			}

			String[] temp_str = new String[i];
			System.arraycopy(str,0,temp_str,0,i);

			if (Arrays.asList(temp_str).contains(aft_word)) {
				flg = false;
				//System.out.println(i + " " + aft_word  + " " + "重複");
				break;
			}

			last = aft_word.charAt(aft_word.length() - 1);;
		}

		if (flg) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}

		sc1.close();

	}

}
