import java.util.Scanner;

public class Main{
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    String S = scanner.next();
    
    int N = S.length();
    String S1 = S.substring(0,(N - 1) / 2);
    String S2 = S.substring((N + 3) / 2 - 1,N);
    
    String answer = "No";
    if(k(S,N) && k(S1,S1.length()) && k(S2,S2.length())){
      answer = "Yes";
    }
    
    System.out.println(answer);
  }
  
  public static boolean k(String str,int length){
    for(int i = 0;i < (length + 1) / 2;i++){
         /*System.out.println(
          i + "," + 
          str.charAt(i) + "," + str.charAt(length - i - 1));
      */
      if(str.charAt(i) != str.charAt(length - i - 1)){
        return false;
      }
    }
    return true;
  }
} import java.util.Scanner; Scanner java.util public class Main{
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    String S = scanner.next();
    
    int N = S.length();
    String S1 = S.substring(0,(N - 1) / 2);
    String S2 = S.substring((N + 3) / 2 - 1,N);
    
    String answer = "No";
    if(k(S,N) && k(S1,S1.length()) && k(S2,S2.length())){
      answer = "Yes";
    }
    
    System.out.println(answer);
  }
  
  public static boolean k(String str,int length){
    for(int i = 0;i < (length + 1) / 2;i++){
         /*System.out.println(
          i + "," + 
          str.charAt(i) + "," + str.charAt(length - i - 1));
      */
      if(str.charAt(i) != str.charAt(length - i - 1)){
        return false;
      }
    }
    return true;
  }
} Main public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    String S = scanner.next();
    
    int N = S.length();
    String S1 = S.substring(0,(N - 1) / 2);
    String S2 = S.substring((N + 3) / 2 - 1,N);
    
    String answer = "No";
    if(k(S,N) && k(S1,S1.length()) && k(S2,S2.length())){
      answer = "Yes";
    }
    
    System.out.println(answer);
  } main {
    Scanner scanner = new Scanner(System.in);
    String S = scanner.next();
    
    int N = S.length();
    String S1 = S.substring(0,(N - 1) / 2);
    String S2 = S.substring((N + 3) / 2 - 1,N);
    
    String answer = "No";
    if(k(S,N) && k(S1,S1.length()) && k(S2,S2.length())){
      answer = "Yes";
    }
    
    System.out.println(answer);
  } Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) String S = scanner.next(); S scanner.next() scanner.next scanner int N = S.length(); N S.length() S.length S String S1 = S.substring(0,(N - 1) / 2); S1 S.substring(0,(N - 1) / 2) S.substring S 0 (N - 1) / 2 (N - 1) N 1 2 String S2 = S.substring((N + 3) / 2 - 1,N); S2 S.substring((N + 3) / 2 - 1,N) S.substring S (N + 3) / 2 - 1 (N + 3) / 2 (N + 3) N 3 2 1 N String answer = "No"; answer "No" if(k(S,N) && k(S1,S1.length()) && k(S2,S2.length())){
      answer = "Yes";
    } k(S,N) && k(S1,S1.length()) && k(S2,S2.length()) k(S,N) && k(S1,S1.length()) && k(S2,S2.length()) k(S,N) k S N k(S1,S1.length()) k S1 S1.length() S1.length S1 k(S2,S2.length()) k S2 S2.length() S2.length S2 {
      answer = "Yes";
    } answer = "Yes" answer "Yes" System.out.println(answer) System.out.println System.out System System.out answer String[] args args public static boolean k(String str,int length){
    for(int i = 0;i < (length + 1) / 2;i++){
         /*System.out.println(
          i + "," + 
          str.charAt(i) + "," + str.charAt(length - i - 1));
      */
      if(str.charAt(i) != str.charAt(length - i - 1)){
        return false;
      }
    }
    return true;
  } k {
    for(int i = 0;i < (length + 1) / 2;i++){
         /*System.out.println(
          i + "," + 
          str.charAt(i) + "," + str.charAt(length - i - 1));
      */
      if(str.charAt(i) != str.charAt(length - i - 1)){
        return false;
      }
    }
    return true;
  } for(int i = 0;i < (length + 1) / 2;i++){
         /*System.out.println(
          i + "," + 
          str.charAt(i) + "," + str.charAt(length - i - 1));
      */
      if(str.charAt(i) != str.charAt(length - i - 1)){
        return false;
      }
    } int i = 0; int i = 0; i 0 i < (length + 1) / 2 i (length + 1) / 2 (length + 1) length 1 2 i++ i++ i {
         /*System.out.println(
          i + "," + 
          str.charAt(i) + "," + str.charAt(length - i - 1));
      */
      if(str.charAt(i) != str.charAt(length - i - 1)){
        return false;
      }
    } {
         /*System.out.println(
          i + "," + 
          str.charAt(i) + "," + str.charAt(length - i - 1));
      */
      if(str.charAt(i) != str.charAt(length - i - 1)){
        return false;
      }
    } if(str.charAt(i) != str.charAt(length - i - 1)){
        return false;
      } str.charAt(i) != str.charAt(length - i - 1) str.charAt(i) str.charAt str i str.charAt(length - i - 1) str.charAt str length - i - 1 length - i - 1 length i 1 {
        return false;
      } return false; false return true; true String str str int length length public class Main{
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    String S = scanner.next();
    
    int N = S.length();
    String S1 = S.substring(0,(N - 1) / 2);
    String S2 = S.substring((N + 3) / 2 - 1,N);
    
    String answer = "No";
    if(k(S,N) && k(S1,S1.length()) && k(S2,S2.length())){
      answer = "Yes";
    }
    
    System.out.println(answer);
  }
  
  public static boolean k(String str,int length){
    for(int i = 0;i < (length + 1) / 2;i++){
         /*System.out.println(
          i + "," + 
          str.charAt(i) + "," + str.charAt(length - i - 1));
      */
      if(str.charAt(i) != str.charAt(length - i - 1)){
        return false;
      }
    }
    return true;
  }
} public class Main{
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    String S = scanner.next();
    
    int N = S.length();
    String S1 = S.substring(0,(N - 1) / 2);
    String S2 = S.substring((N + 3) / 2 - 1,N);
    
    String answer = "No";
    if(k(S,N) && k(S1,S1.length()) && k(S2,S2.length())){
      answer = "Yes";
    }
    
    System.out.println(answer);
  }
  
  public static boolean k(String str,int length){
    for(int i = 0;i < (length + 1) / 2;i++){
         /*System.out.println(
          i + "," + 
          str.charAt(i) + "," + str.charAt(length - i - 1));
      */
      if(str.charAt(i) != str.charAt(length - i - 1)){
        return false;
      }
    }
    return true;
  }
} Main
import java.util.Scanner;

public class Main{
  public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    String S = scanner.next();
    
    int N = S.length();
    String S1 = S.substring(0,(N - 1) / 2);
    String S2 = S.substring((N + 3) / 2 - 1,N);
    
    String answer = "No";
    if(k(S,N) && k(S1,S1.length()) && k(S2,S2.length())){
      answer = "Yes";
    }
    
    System.out.println(answer);
  }
  
  public static boolean k(String str,int length){
    for(int i = 0;i < (length + 1) / 2;i++){
         /*System.out.println(
          i + "," + 
          str.charAt(i) + "," + str.charAt(length - i - 1));
      */
      if(str.charAt(i) != str.charAt(length - i - 1)){
        return false;
      }
    }
    return true;
  }
}