import java.util.*;
import java.lang.*;
public class Main {
	public static boolean checkPalindrome(char[] arr, int a, int b){
		for(int i=a;i<b-a;i++){
			if(arr[i]!=arr[b-a-i-1]){
				return false;
			}
		}
		return true;

	}
	public static void main(String args[]){
		Scanner sc=new Scanner(System.in);
		char[] s=sc.nextLine().toCharArray();
		int n=s.length;
		if(checkPalindrome(s,0,n)&&checkPalindrome(s,0,(n-1)/2)&&checkPalindrome(s,(n+3)/2,n)){
			System.out.print("Yes");
		}
		else{
			System.out.println("No");
		}
	}
} import java.util.*; util.* java import java.lang.*; lang.* java public class Main {
	public static boolean checkPalindrome(char[] arr, int a, int b){
		for(int i=a;i<b-a;i++){
			if(arr[i]!=arr[b-a-i-1]){
				return false;
			}
		}
		return true;

	}
	public static void main(String args[]){
		Scanner sc=new Scanner(System.in);
		char[] s=sc.nextLine().toCharArray();
		int n=s.length;
		if(checkPalindrome(s,0,n)&&checkPalindrome(s,0,(n-1)/2)&&checkPalindrome(s,(n+3)/2,n)){
			System.out.print("Yes");
		}
		else{
			System.out.println("No");
		}
	}
} Main public static boolean checkPalindrome(char[] arr, int a, int b){
		for(int i=a;i<b-a;i++){
			if(arr[i]!=arr[b-a-i-1]){
				return false;
			}
		}
		return true;

	} checkPalindrome {
		for(int i=a;i<b-a;i++){
			if(arr[i]!=arr[b-a-i-1]){
				return false;
			}
		}
		return true;

	} for(int i=a;i<b-a;i++){
			if(arr[i]!=arr[b-a-i-1]){
				return false;
			}
		} int i=a; int i=a; i a i<b-a i b-a b a i++ i++ i {
			if(arr[i]!=arr[b-a-i-1]){
				return false;
			}
		} {
			if(arr[i]!=arr[b-a-i-1]){
				return false;
			}
		} if(arr[i]!=arr[b-a-i-1]){
				return false;
			} arr[i]!=arr[b-a-i-1] arr[i] arr i arr[b-a-i-1] arr b-a-i-1 i b-a-i-1 b a i 1 {
				return false;
			} return false; false return true; true char[] arr arr int a a int b b public static void main(String args[]){
		Scanner sc=new Scanner(System.in);
		char[] s=sc.nextLine().toCharArray();
		int n=s.length;
		if(checkPalindrome(s,0,n)&&checkPalindrome(s,0,(n-1)/2)&&checkPalindrome(s,(n+3)/2,n)){
			System.out.print("Yes");
		}
		else{
			System.out.println("No");
		}
	} main {
		Scanner sc=new Scanner(System.in);
		char[] s=sc.nextLine().toCharArray();
		int n=s.length;
		if(checkPalindrome(s,0,n)&&checkPalindrome(s,0,(n-1)/2)&&checkPalindrome(s,(n+3)/2,n)){
			System.out.print("Yes");
		}
		else{
			System.out.println("No");
		}
	} Scanner sc=new Scanner(System.in); sc new Scanner(System.in) char[] s=sc.nextLine().toCharArray(); s sc.nextLine().toCharArray() sc.nextLine().toCharArray sc.nextLine() sc.nextLine sc int n=s.length; n s.length s s.length if(checkPalindrome(s,0,n)&&checkPalindrome(s,0,(n-1)/2)&&checkPalindrome(s,(n+3)/2,n)){
			System.out.print("Yes");
		}
		else{
			System.out.println("No");
		} checkPalindrome(s,0,n)&&checkPalindrome(s,0,(n-1)/2)&&checkPalindrome(s,(n+3)/2,n) checkPalindrome(s,0,n)&&checkPalindrome(s,0,(n-1)/2)&&checkPalindrome(s,(n+3)/2,n) checkPalindrome(s,0,n) checkPalindrome s 0 n checkPalindrome(s,0,(n-1)/2) checkPalindrome s 0 (n-1)/2 (n-1) n 1 2 checkPalindrome(s,(n+3)/2,n) checkPalindrome s (n+3)/2 (n+3) n 3 2 n {
			System.out.print("Yes");
		} System.out.print("Yes") System.out.print 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 class Main {
	public static boolean checkPalindrome(char[] arr, int a, int b){
		for(int i=a;i<b-a;i++){
			if(arr[i]!=arr[b-a-i-1]){
				return false;
			}
		}
		return true;

	}
	public static void main(String args[]){
		Scanner sc=new Scanner(System.in);
		char[] s=sc.nextLine().toCharArray();
		int n=s.length;
		if(checkPalindrome(s,0,n)&&checkPalindrome(s,0,(n-1)/2)&&checkPalindrome(s,(n+3)/2,n)){
			System.out.print("Yes");
		}
		else{
			System.out.println("No");
		}
	}
} public class Main {
	public static boolean checkPalindrome(char[] arr, int a, int b){
		for(int i=a;i<b-a;i++){
			if(arr[i]!=arr[b-a-i-1]){
				return false;
			}
		}
		return true;

	}
	public static void main(String args[]){
		Scanner sc=new Scanner(System.in);
		char[] s=sc.nextLine().toCharArray();
		int n=s.length;
		if(checkPalindrome(s,0,n)&&checkPalindrome(s,0,(n-1)/2)&&checkPalindrome(s,(n+3)/2,n)){
			System.out.print("Yes");
		}
		else{
			System.out.println("No");
		}
	}
} Main
import java.util.*;
import java.lang.*;
public class Main {
	public static boolean checkPalindrome(char[] arr, int a, int b){
		for(int i=a;i<b-a;i++){
			if(arr[i]!=arr[b-a-i-1]){
				return false;
			}
		}
		return true;

	}
	public static void main(String args[]){
		Scanner sc=new Scanner(System.in);
		char[] s=sc.nextLine().toCharArray();
		int n=s.length;
		if(checkPalindrome(s,0,n)&&checkPalindrome(s,0,(n-1)/2)&&checkPalindrome(s,(n+3)/2,n)){
			System.out.print("Yes");
		}
		else{
			System.out.println("No");
		}
	}
}