import java.util.*;

public class Main {
    public static void main(String[] args) {
 		Scanner sc = new Scanner(System.in);

    int n=sc.nextInt();
    String w[]=new String[n];
    for(int i=0;i<n;i++){
      w[i]=sc.next();
    }

    if(noequ(w,n)==true && equ(w,n)==true){
      System.out.println("Yes");
    }else{
      System.out.println("No");
    }



	}

  public static boolean noequ(String[]w,int n){
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      for(int s=i+1;s<n;s++){
        if(w[i].equals(w[s])){
          ans=false;
        }
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  }

  public static boolean equ(String[]w,int n){
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      if(w[i].charAt(w[i].length()-1)!=w[i+1].charAt(0)) {
        ans=false;
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  }

} import java.util.*; util.* java public class Main {
    public static void main(String[] args) {
 		Scanner sc = new Scanner(System.in);

    int n=sc.nextInt();
    String w[]=new String[n];
    for(int i=0;i<n;i++){
      w[i]=sc.next();
    }

    if(noequ(w,n)==true && equ(w,n)==true){
      System.out.println("Yes");
    }else{
      System.out.println("No");
    }



	}

  public static boolean noequ(String[]w,int n){
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      for(int s=i+1;s<n;s++){
        if(w[i].equals(w[s])){
          ans=false;
        }
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  }

  public static boolean equ(String[]w,int n){
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      if(w[i].charAt(w[i].length()-1)!=w[i+1].charAt(0)) {
        ans=false;
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  }

} Main public static void main(String[] args) {
 		Scanner sc = new Scanner(System.in);

    int n=sc.nextInt();
    String w[]=new String[n];
    for(int i=0;i<n;i++){
      w[i]=sc.next();
    }

    if(noequ(w,n)==true && equ(w,n)==true){
      System.out.println("Yes");
    }else{
      System.out.println("No");
    }



	} main {
 		Scanner sc = new Scanner(System.in);

    int n=sc.nextInt();
    String w[]=new String[n];
    for(int i=0;i<n;i++){
      w[i]=sc.next();
    }

    if(noequ(w,n)==true && equ(w,n)==true){
      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 String w[]=new String[n]; w new String[n] n for(int i=0;i<n;i++){
      w[i]=sc.next();
    } int i=0; int i=0; i 0 i<n i n i++ i++ i {
      w[i]=sc.next();
    } {
      w[i]=sc.next();
    } w[i]=sc.next() w[i] w i sc.next() sc.next sc if(noequ(w,n)==true && equ(w,n)==true){
      System.out.println("Yes");
    }else{
      System.out.println("No");
    } noequ(w,n)==true && equ(w,n)==true noequ(w,n)==true noequ(w,n) noequ w n true equ(w,n)==true equ(w,n) equ w n true {
      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" String[] args args public static boolean noequ(String[]w,int n){
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      for(int s=i+1;s<n;s++){
        if(w[i].equals(w[s])){
          ans=false;
        }
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  } noequ {
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      for(int s=i+1;s<n;s++){
        if(w[i].equals(w[s])){
          ans=false;
        }
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  } boolean ans=true; ans true for(int i=0;i<n-1;i++){
      for(int s=i+1;s<n;s++){
        if(w[i].equals(w[s])){
          ans=false;
        }
      }
    } int i=0; int i=0; i 0 i<n-1 i n-1 n 1 i++ i++ i {
      for(int s=i+1;s<n;s++){
        if(w[i].equals(w[s])){
          ans=false;
        }
      }
    } {
      for(int s=i+1;s<n;s++){
        if(w[i].equals(w[s])){
          ans=false;
        }
      }
    } for(int s=i+1;s<n;s++){
        if(w[i].equals(w[s])){
          ans=false;
        }
      } int s=i+1; int s=i+1; s i+1 i 1 s<n s n s++ s++ s {
        if(w[i].equals(w[s])){
          ans=false;
        }
      } {
        if(w[i].equals(w[s])){
          ans=false;
        }
      } if(w[i].equals(w[s])){
          ans=false;
        } w[i].equals(w[s]) w[i].equals w[i] w i w[s] w s {
          ans=false;
        } ans=false ans false if(ans==true){
      return true;
    }else{
      return false;
    } ans==true ans true {
      return true;
    } return true; true {
      return false;
    } return false; false String[]w w int n n public static boolean equ(String[]w,int n){
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      if(w[i].charAt(w[i].length()-1)!=w[i+1].charAt(0)) {
        ans=false;
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  } equ {
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      if(w[i].charAt(w[i].length()-1)!=w[i+1].charAt(0)) {
        ans=false;
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  } boolean ans=true; ans true for(int i=0;i<n-1;i++){
      if(w[i].charAt(w[i].length()-1)!=w[i+1].charAt(0)) {
        ans=false;
      }
    } int i=0; int i=0; i 0 i<n-1 i n-1 n 1 i++ i++ i {
      if(w[i].charAt(w[i].length()-1)!=w[i+1].charAt(0)) {
        ans=false;
      }
    } {
      if(w[i].charAt(w[i].length()-1)!=w[i+1].charAt(0)) {
        ans=false;
      }
    } if(w[i].charAt(w[i].length()-1)!=w[i+1].charAt(0)) {
        ans=false;
      } w[i].charAt(w[i].length()-1)!=w[i+1].charAt(0) 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 w[i+1].charAt(0) w[i+1].charAt w[i+1] w i+1 i 1 0 {
        ans=false;
      } ans=false ans false if(ans==true){
      return true;
    }else{
      return false;
    } ans==true ans true {
      return true;
    } return true; true {
      return false;
    } return false; false String[]w w int n n public class Main {
    public static void main(String[] args) {
 		Scanner sc = new Scanner(System.in);

    int n=sc.nextInt();
    String w[]=new String[n];
    for(int i=0;i<n;i++){
      w[i]=sc.next();
    }

    if(noequ(w,n)==true && equ(w,n)==true){
      System.out.println("Yes");
    }else{
      System.out.println("No");
    }



	}

  public static boolean noequ(String[]w,int n){
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      for(int s=i+1;s<n;s++){
        if(w[i].equals(w[s])){
          ans=false;
        }
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  }

  public static boolean equ(String[]w,int n){
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      if(w[i].charAt(w[i].length()-1)!=w[i+1].charAt(0)) {
        ans=false;
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  }

} public class Main {
    public static void main(String[] args) {
 		Scanner sc = new Scanner(System.in);

    int n=sc.nextInt();
    String w[]=new String[n];
    for(int i=0;i<n;i++){
      w[i]=sc.next();
    }

    if(noequ(w,n)==true && equ(w,n)==true){
      System.out.println("Yes");
    }else{
      System.out.println("No");
    }



	}

  public static boolean noequ(String[]w,int n){
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      for(int s=i+1;s<n;s++){
        if(w[i].equals(w[s])){
          ans=false;
        }
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  }

  public static boolean equ(String[]w,int n){
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      if(w[i].charAt(w[i].length()-1)!=w[i+1].charAt(0)) {
        ans=false;
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  }

} Main
import java.util.*;

public class Main {
    public static void main(String[] args) {
 		Scanner sc = new Scanner(System.in);

    int n=sc.nextInt();
    String w[]=new String[n];
    for(int i=0;i<n;i++){
      w[i]=sc.next();
    }

    if(noequ(w,n)==true && equ(w,n)==true){
      System.out.println("Yes");
    }else{
      System.out.println("No");
    }



	}

  public static boolean noequ(String[]w,int n){
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      for(int s=i+1;s<n;s++){
        if(w[i].equals(w[s])){
          ans=false;
        }
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  }

  public static boolean equ(String[]w,int n){
    boolean ans=true;
    for(int i=0;i<n-1;i++){
      if(w[i].charAt(w[i].length()-1)!=w[i+1].charAt(0)) {
        ans=false;
      }
    }
    if(ans==true){
      return true;
    }else{
      return false;
    }
  }

}
