import java.util.*;
public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		String word = sc.next();
        String s[] = word.split("");
        int ret = word.length() / 2;
        String front = "",back = "";

      
        StringBuffer str = new StringBuffer(word);
        String reverse = str.reverse().toString();
        if(!word.equals(reverse)){
          System.out.println("No");
          return;
        }
              
        for(int i = 0;i < ret;i++){
          front += s[i];
        }
		str = new StringBuffer(front);
        reverse = str.reverse().toString();      
        if(!front.equals(reverse)){
          System.out.println("No");
          return;
        }        
      
        for(int i = ret + 1;i < word.length();i++){
          back += s[i];
        }
		str = new StringBuffer(back);
        reverse = str.reverse().toString();      
        if(!back.equals(reverse)){
          System.out.println("No");
          return;
        }       
        
        System.out.println("Yes");
    }
} import java.util.*; util.* java public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		String word = sc.next();
        String s[] = word.split("");
        int ret = word.length() / 2;
        String front = "",back = "";

      
        StringBuffer str = new StringBuffer(word);
        String reverse = str.reverse().toString();
        if(!word.equals(reverse)){
          System.out.println("No");
          return;
        }
              
        for(int i = 0;i < ret;i++){
          front += s[i];
        }
		str = new StringBuffer(front);
        reverse = str.reverse().toString();      
        if(!front.equals(reverse)){
          System.out.println("No");
          return;
        }        
      
        for(int i = ret + 1;i < word.length();i++){
          back += s[i];
        }
		str = new StringBuffer(back);
        reverse = str.reverse().toString();      
        if(!back.equals(reverse)){
          System.out.println("No");
          return;
        }       
        
        System.out.println("Yes");
    }
} Main public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		String word = sc.next();
        String s[] = word.split("");
        int ret = word.length() / 2;
        String front = "",back = "";

      
        StringBuffer str = new StringBuffer(word);
        String reverse = str.reverse().toString();
        if(!word.equals(reverse)){
          System.out.println("No");
          return;
        }
              
        for(int i = 0;i < ret;i++){
          front += s[i];
        }
		str = new StringBuffer(front);
        reverse = str.reverse().toString();      
        if(!front.equals(reverse)){
          System.out.println("No");
          return;
        }        
      
        for(int i = ret + 1;i < word.length();i++){
          back += s[i];
        }
		str = new StringBuffer(back);
        reverse = str.reverse().toString();      
        if(!back.equals(reverse)){
          System.out.println("No");
          return;
        }       
        
        System.out.println("Yes");
    } main {
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		String word = sc.next();
        String s[] = word.split("");
        int ret = word.length() / 2;
        String front = "",back = "";

      
        StringBuffer str = new StringBuffer(word);
        String reverse = str.reverse().toString();
        if(!word.equals(reverse)){
          System.out.println("No");
          return;
        }
              
        for(int i = 0;i < ret;i++){
          front += s[i];
        }
		str = new StringBuffer(front);
        reverse = str.reverse().toString();      
        if(!front.equals(reverse)){
          System.out.println("No");
          return;
        }        
      
        for(int i = ret + 1;i < word.length();i++){
          back += s[i];
        }
		str = new StringBuffer(back);
        reverse = str.reverse().toString();      
        if(!back.equals(reverse)){
          System.out.println("No");
          return;
        }       
        
        System.out.println("Yes");
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String word = sc.next(); word sc.next() sc.next sc String s[] = word.split(""); s word.split("") word.split word "" int ret = word.length() / 2; ret word.length() / 2 word.length() word.length word 2 String front = "" front "" back = ""; back "" StringBuffer str = new StringBuffer(word); str new StringBuffer(word) String reverse = str.reverse().toString(); reverse str.reverse().toString() str.reverse().toString str.reverse() str.reverse str if(!word.equals(reverse)){
          System.out.println("No");
          return;
        } !word.equals(reverse) word.equals(reverse) word.equals word reverse {
          System.out.println("No");
          return;
        } System.out.println("No") System.out.println System.out System System.out "No" return; for(int i = 0;i < ret;i++){
          front += s[i];
        } int i = 0; int i = 0; i 0 i < ret i ret i++ i++ i {
          front += s[i];
        } {
          front += s[i];
        } front += s[i] front s[i] s i str = new StringBuffer(front) str new StringBuffer(front) reverse = str.reverse().toString() reverse str.reverse().toString() str.reverse().toString str.reverse() str.reverse str if(!front.equals(reverse)){
          System.out.println("No");
          return;
        } !front.equals(reverse) front.equals(reverse) front.equals front reverse {
          System.out.println("No");
          return;
        } System.out.println("No") System.out.println System.out System System.out "No" return; for(int i = ret + 1;i < word.length();i++){
          back += s[i];
        } int i = ret + 1; int i = ret + 1; i ret + 1 ret 1 i < word.length() i word.length() word.length word i++ i++ i {
          back += s[i];
        } {
          back += s[i];
        } back += s[i] back s[i] s i str = new StringBuffer(back) str new StringBuffer(back) reverse = str.reverse().toString() reverse str.reverse().toString() str.reverse().toString str.reverse() str.reverse str if(!back.equals(reverse)){
          System.out.println("No");
          return;
        } !back.equals(reverse) back.equals(reverse) back.equals back reverse {
          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 class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		String word = sc.next();
        String s[] = word.split("");
        int ret = word.length() / 2;
        String front = "",back = "";

      
        StringBuffer str = new StringBuffer(word);
        String reverse = str.reverse().toString();
        if(!word.equals(reverse)){
          System.out.println("No");
          return;
        }
              
        for(int i = 0;i < ret;i++){
          front += s[i];
        }
		str = new StringBuffer(front);
        reverse = str.reverse().toString();      
        if(!front.equals(reverse)){
          System.out.println("No");
          return;
        }        
      
        for(int i = ret + 1;i < word.length();i++){
          back += s[i];
        }
		str = new StringBuffer(back);
        reverse = str.reverse().toString();      
        if(!back.equals(reverse)){
          System.out.println("No");
          return;
        }       
        
        System.out.println("Yes");
    }
} public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		String word = sc.next();
        String s[] = word.split("");
        int ret = word.length() / 2;
        String front = "",back = "";

      
        StringBuffer str = new StringBuffer(word);
        String reverse = str.reverse().toString();
        if(!word.equals(reverse)){
          System.out.println("No");
          return;
        }
              
        for(int i = 0;i < ret;i++){
          front += s[i];
        }
		str = new StringBuffer(front);
        reverse = str.reverse().toString();      
        if(!front.equals(reverse)){
          System.out.println("No");
          return;
        }        
      
        for(int i = ret + 1;i < word.length();i++){
          back += s[i];
        }
		str = new StringBuffer(back);
        reverse = str.reverse().toString();      
        if(!back.equals(reverse)){
          System.out.println("No");
          return;
        }       
        
        System.out.println("Yes");
    }
} Main
import java.util.*;
public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		// 整数の入力
		String word = sc.next();
        String s[] = word.split("");
        int ret = word.length() / 2;
        String front = "",back = "";

      
        StringBuffer str = new StringBuffer(word);
        String reverse = str.reverse().toString();
        if(!word.equals(reverse)){
          System.out.println("No");
          return;
        }
              
        for(int i = 0;i < ret;i++){
          front += s[i];
        }
		str = new StringBuffer(front);
        reverse = str.reverse().toString();      
        if(!front.equals(reverse)){
          System.out.println("No");
          return;
        }        
      
        for(int i = ret + 1;i < word.length();i++){
          back += s[i];
        }
		str = new StringBuffer(back);
        reverse = str.reverse().toString();      
        if(!back.equals(reverse)){
          System.out.println("No");
          return;
        }       
        
        System.out.println("Yes");
    }
}