import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String S=sc.next();
    int N=S.length();
    String Moto[]=S.split("");
    String Hantai[]=new String[N];
    String H2[]=new String[(N-1)/2];
    String H3[]=new String[(N+5)/2];
    boolean first=true;
    boolean second=true;
    boolean third=true;
    for(int i=0;i<N;i++){
      Hantai[i]=Moto[N-1-i];
    }
    for(int i=0;i<(N-1)/2;i++){
      H2[i]=Moto[(N-1)/2-1-i];
    }
    for(int i=0;i<(N+5)/2;i++){
      if(N==(N+3)/2){
        break;
      }
      H3[i]=Moto[N-1-i];
    }
    for(int i=0; i<N-1; i++){
      if(!(Moto[i].equals(Hantai[i]))) {first=false;
        break;}
      }
      for(int i=0;i<(N-1)/2-1;i++){
        if(!(Moto[i].equals(H2[i]))) {second=false;
          break;}

        }
        for(int i=0;i<(N+5)/2-1;i++){
          if(N==(N+3)/2){
            break;
          }
          if(!(Moto[i].equals(H3[i]))) {third=false;
            break;}
          }
          if(first&&second&&third){
            System.out.println("Yes");
          }else{
            System.out.println("No");
          }
        }
      } import java.util.Scanner; Scanner java.util class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String S=sc.next();
    int N=S.length();
    String Moto[]=S.split("");
    String Hantai[]=new String[N];
    String H2[]=new String[(N-1)/2];
    String H3[]=new String[(N+5)/2];
    boolean first=true;
    boolean second=true;
    boolean third=true;
    for(int i=0;i<N;i++){
      Hantai[i]=Moto[N-1-i];
    }
    for(int i=0;i<(N-1)/2;i++){
      H2[i]=Moto[(N-1)/2-1-i];
    }
    for(int i=0;i<(N+5)/2;i++){
      if(N==(N+3)/2){
        break;
      }
      H3[i]=Moto[N-1-i];
    }
    for(int i=0; i<N-1; i++){
      if(!(Moto[i].equals(Hantai[i]))) {first=false;
        break;}
      }
      for(int i=0;i<(N-1)/2-1;i++){
        if(!(Moto[i].equals(H2[i]))) {second=false;
          break;}

        }
        for(int i=0;i<(N+5)/2-1;i++){
          if(N==(N+3)/2){
            break;
          }
          if(!(Moto[i].equals(H3[i]))) {third=false;
            break;}
          }
          if(first&&second&&third){
            System.out.println("Yes");
          }else{
            System.out.println("No");
          }
        }
      } Main public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String S=sc.next();
    int N=S.length();
    String Moto[]=S.split("");
    String Hantai[]=new String[N];
    String H2[]=new String[(N-1)/2];
    String H3[]=new String[(N+5)/2];
    boolean first=true;
    boolean second=true;
    boolean third=true;
    for(int i=0;i<N;i++){
      Hantai[i]=Moto[N-1-i];
    }
    for(int i=0;i<(N-1)/2;i++){
      H2[i]=Moto[(N-1)/2-1-i];
    }
    for(int i=0;i<(N+5)/2;i++){
      if(N==(N+3)/2){
        break;
      }
      H3[i]=Moto[N-1-i];
    }
    for(int i=0; i<N-1; i++){
      if(!(Moto[i].equals(Hantai[i]))) {first=false;
        break;}
      }
      for(int i=0;i<(N-1)/2-1;i++){
        if(!(Moto[i].equals(H2[i]))) {second=false;
          break;}

        }
        for(int i=0;i<(N+5)/2-1;i++){
          if(N==(N+3)/2){
            break;
          }
          if(!(Moto[i].equals(H3[i]))) {third=false;
            break;}
          }
          if(first&&second&&third){
            System.out.println("Yes");
          }else{
            System.out.println("No");
          }
        } main {
    Scanner sc = new Scanner(System.in);
    String S=sc.next();
    int N=S.length();
    String Moto[]=S.split("");
    String Hantai[]=new String[N];
    String H2[]=new String[(N-1)/2];
    String H3[]=new String[(N+5)/2];
    boolean first=true;
    boolean second=true;
    boolean third=true;
    for(int i=0;i<N;i++){
      Hantai[i]=Moto[N-1-i];
    }
    for(int i=0;i<(N-1)/2;i++){
      H2[i]=Moto[(N-1)/2-1-i];
    }
    for(int i=0;i<(N+5)/2;i++){
      if(N==(N+3)/2){
        break;
      }
      H3[i]=Moto[N-1-i];
    }
    for(int i=0; i<N-1; i++){
      if(!(Moto[i].equals(Hantai[i]))) {first=false;
        break;}
      }
      for(int i=0;i<(N-1)/2-1;i++){
        if(!(Moto[i].equals(H2[i]))) {second=false;
          break;}

        }
        for(int i=0;i<(N+5)/2-1;i++){
          if(N==(N+3)/2){
            break;
          }
          if(!(Moto[i].equals(H3[i]))) {third=false;
            break;}
          }
          if(first&&second&&third){
            System.out.println("Yes");
          }else{
            System.out.println("No");
          }
        } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String S=sc.next(); S sc.next() sc.next sc int N=S.length(); N S.length() S.length S String Moto[]=S.split(""); Moto S.split("") S.split S "" String Hantai[]=new String[N]; Hantai new String[N] N String H2[]=new String[(N-1)/2]; H2 new String[(N-1)/2] (N-1)/2 (N-1) N 1 2 String H3[]=new String[(N+5)/2]; H3 new String[(N+5)/2] (N+5)/2 (N+5) N 5 2 boolean first=true; first true boolean second=true; second true boolean third=true; third true for(int i=0;i<N;i++){
      Hantai[i]=Moto[N-1-i];
    } int i=0; int i=0; i 0 i<N i N i++ i++ i {
      Hantai[i]=Moto[N-1-i];
    } {
      Hantai[i]=Moto[N-1-i];
    } Hantai[i]=Moto[N-1-i] Hantai[i] Hantai i Moto[N-1-i] Moto N-1-i N-1-i N 1 i for(int i=0;i<(N-1)/2;i++){
      H2[i]=Moto[(N-1)/2-1-i];
    } int i=0; int i=0; i 0 i<(N-1)/2 i (N-1)/2 (N-1) N 1 2 i++ i++ i {
      H2[i]=Moto[(N-1)/2-1-i];
    } {
      H2[i]=Moto[(N-1)/2-1-i];
    } H2[i]=Moto[(N-1)/2-1-i] H2[i] H2 i Moto[(N-1)/2-1-i] Moto (N-1)/2-1-i (N-1)/2-1-i (N-1)/2 (N-1) N 1 2 1 i for(int i=0;i<(N+5)/2;i++){
      if(N==(N+3)/2){
        break;
      }
      H3[i]=Moto[N-1-i];
    } int i=0; int i=0; i 0 i<(N+5)/2 i (N+5)/2 (N+5) N 5 2 i++ i++ i {
      if(N==(N+3)/2){
        break;
      }
      H3[i]=Moto[N-1-i];
    } {
      if(N==(N+3)/2){
        break;
      }
      H3[i]=Moto[N-1-i];
    } if(N==(N+3)/2){
        break;
      } N==(N+3)/2 N (N+3)/2 (N+3) N 3 2 {
        break;
      } break; H3[i]=Moto[N-1-i] H3[i] H3 i Moto[N-1-i] Moto N-1-i N-1-i N 1 i for(int i=0; i<N-1; i++){
      if(!(Moto[i].equals(Hantai[i]))) {first=false;
        break;}
      } int i=0; int i=0; i 0 i<N-1 i N-1 N 1 i++ i++ i {
      if(!(Moto[i].equals(Hantai[i]))) {first=false;
        break;}
      } {
      if(!(Moto[i].equals(Hantai[i]))) {first=false;
        break;}
      } if(!(Moto[i].equals(Hantai[i]))) {first=false;
        break;} !(Moto[i].equals(Hantai[i])) (Moto[i].equals(Hantai[i])) Moto[i].equals Moto[i] Moto i Hantai[i] Hantai i {first=false;
        break;} first=false first false break; for(int i=0;i<(N-1)/2-1;i++){
        if(!(Moto[i].equals(H2[i]))) {second=false;
          break;}

        } int i=0; int i=0; i 0 i<(N-1)/2-1 i (N-1)/2-1 (N-1)/2 (N-1) N 1 2 1 i++ i++ i {
        if(!(Moto[i].equals(H2[i]))) {second=false;
          break;}

        } {
        if(!(Moto[i].equals(H2[i]))) {second=false;
          break;}

        } if(!(Moto[i].equals(H2[i]))) {second=false;
          break;} !(Moto[i].equals(H2[i])) (Moto[i].equals(H2[i])) Moto[i].equals Moto[i] Moto i H2[i] H2 i {second=false;
          break;} second=false second false break; for(int i=0;i<(N+5)/2-1;i++){
          if(N==(N+3)/2){
            break;
          }
          if(!(Moto[i].equals(H3[i]))) {third=false;
            break;}
          } int i=0; int i=0; i 0 i<(N+5)/2-1 i (N+5)/2-1 (N+5)/2 (N+5) N 5 2 1 i++ i++ i {
          if(N==(N+3)/2){
            break;
          }
          if(!(Moto[i].equals(H3[i]))) {third=false;
            break;}
          } {
          if(N==(N+3)/2){
            break;
          }
          if(!(Moto[i].equals(H3[i]))) {third=false;
            break;}
          } if(N==(N+3)/2){
            break;
          } N==(N+3)/2 N (N+3)/2 (N+3) N 3 2 {
            break;
          } break; if(!(Moto[i].equals(H3[i]))) {third=false;
            break;} !(Moto[i].equals(H3[i])) (Moto[i].equals(H3[i])) Moto[i].equals Moto[i] Moto i H3[i] H3 i {third=false;
            break;} third=false third false break; if(first&&second&&third){
            System.out.println("Yes");
          }else{
            System.out.println("No");
          } first&&second&&third first&&second&&third first second third {
            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
import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String S=sc.next();
    int N=S.length();
    String Moto[]=S.split("");
    String Hantai[]=new String[N];
    String H2[]=new String[(N-1)/2];
    String H3[]=new String[(N+5)/2];
    boolean first=true;
    boolean second=true;
    boolean third=true;
    for(int i=0;i<N;i++){
      Hantai[i]=Moto[N-1-i];
    }
    for(int i=0;i<(N-1)/2;i++){
      H2[i]=Moto[(N-1)/2-1-i];
    }
    for(int i=0;i<(N+5)/2;i++){
      if(N==(N+3)/2){
        break;
      }
      H3[i]=Moto[N-1-i];
    }
    for(int i=0; i<N-1; i++){
      if(!(Moto[i].equals(Hantai[i]))) {first=false;
        break;}
      }
      for(int i=0;i<(N-1)/2-1;i++){
        if(!(Moto[i].equals(H2[i]))) {second=false;
          break;}

        }
        for(int i=0;i<(N+5)/2-1;i++){
          if(N==(N+3)/2){
            break;
          }
          if(!(Moto[i].equals(H3[i]))) {third=false;
            break;}
          }
          if(first&&second&&third){
            System.out.println("Yes");
          }else{
            System.out.println("No");
          }
        }
      }
