import 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  S2 = S.substring(0,(N-1)/2);
   String  S3 = S.substring(((N+3)/2)-1,N); 
   if (isPalindrome(S)&&isPalindrome(S2)&&isPalindrome(S3)){
     System.out.printf("Yes");
   }else{
     System.out.printf("No");
   } 
}
  static boolean isPalindrome (String s) {
	int n = s.length();
	for (int i=0; i<n/2; i++) {
		if (s.charAt(i)!=s.charAt(n-i-1)) {return false;}
	}
	return true;
}
} import java.util.*; util.* java class Main{
public static void main(String args[]){
   Scanner sc = new Scanner(System.in);
   String  S = sc.next();
   int N = S.length();
   String  S2 = S.substring(0,(N-1)/2);
   String  S3 = S.substring(((N+3)/2)-1,N); 
   if (isPalindrome(S)&&isPalindrome(S2)&&isPalindrome(S3)){
     System.out.printf("Yes");
   }else{
     System.out.printf("No");
   } 
}
  static boolean isPalindrome (String s) {
	int n = s.length();
	for (int i=0; i<n/2; i++) {
		if (s.charAt(i)!=s.charAt(n-i-1)) {return false;}
	}
	return true;
}
} Main public static void main(String args[]){
   Scanner sc = new Scanner(System.in);
   String  S = sc.next();
   int N = S.length();
   String  S2 = S.substring(0,(N-1)/2);
   String  S3 = S.substring(((N+3)/2)-1,N); 
   if (isPalindrome(S)&&isPalindrome(S2)&&isPalindrome(S3)){
     System.out.printf("Yes");
   }else{
     System.out.printf("No");
   } 
} main {
   Scanner sc = new Scanner(System.in);
   String  S = sc.next();
   int N = S.length();
   String  S2 = S.substring(0,(N-1)/2);
   String  S3 = S.substring(((N+3)/2)-1,N); 
   if (isPalindrome(S)&&isPalindrome(S2)&&isPalindrome(S3)){
     System.out.printf("Yes");
   }else{
     System.out.printf("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  S2 = S.substring(0,(N-1)/2); S2 S.substring(0,(N-1)/2) S.substring S 0 (N-1)/2 (N-1) N 1 2 String  S3 = S.substring(((N+3)/2)-1,N); S3 S.substring(((N+3)/2)-1,N) S.substring S ((N+3)/2)-1 ((N+3)/2) (N+3) N 3 2 1 N if (isPalindrome(S)&&isPalindrome(S2)&&isPalindrome(S3)){
     System.out.printf("Yes");
   }else{
     System.out.printf("No");
   } isPalindrome(S)&&isPalindrome(S2)&&isPalindrome(S3) isPalindrome(S)&&isPalindrome(S2)&&isPalindrome(S3) isPalindrome(S) isPalindrome S isPalindrome(S2) isPalindrome S2 isPalindrome(S3) isPalindrome S3 {
     System.out.printf("Yes");
   } System.out.printf("Yes") System.out.printf System.out System System.out "Yes" {
     System.out.printf("No");
   } System.out.printf("No") System.out.printf System.out System System.out "No" String args[] args static boolean isPalindrome (String s) {
	int n = s.length();
	for (int i=0; i<n/2; i++) {
		if (s.charAt(i)!=s.charAt(n-i-1)) {return false;}
	}
	return true;
} isPalindrome {
	int n = s.length();
	for (int i=0; i<n/2; i++) {
		if (s.charAt(i)!=s.charAt(n-i-1)) {return false;}
	}
	return true;
} int n = s.length(); n s.length() s.length s for (int i=0; i<n/2; i++) {
		if (s.charAt(i)!=s.charAt(n-i-1)) {return false;}
	} int i=0; int i=0; i 0 i<n/2 i n/2 n 2 i++ i++ i {
		if (s.charAt(i)!=s.charAt(n-i-1)) {return false;}
	} {
		if (s.charAt(i)!=s.charAt(n-i-1)) {return false;}
	} if (s.charAt(i)!=s.charAt(n-i-1)) {return false;} s.charAt(i)!=s.charAt(n-i-1) s.charAt(i) s.charAt s i s.charAt(n-i-1) s.charAt s n-i-1 n-i-1 n i 1 {return false;} return false; false return true; true String s s
import 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  S2 = S.substring(0,(N-1)/2);
   String  S3 = S.substring(((N+3)/2)-1,N); 
   if (isPalindrome(S)&&isPalindrome(S2)&&isPalindrome(S3)){
     System.out.printf("Yes");
   }else{
     System.out.printf("No");
   } 
}
  static boolean isPalindrome (String s) {
	int n = s.length();
	for (int i=0; i<n/2; i++) {
		if (s.charAt(i)!=s.charAt(n-i-1)) {return false;}
	}
	return true;
}
}
