import java.util.*;
 
class Main{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		char[] c = sc.next().toCharArray();
		int N = c.length;
		boolean ans = true;
		
		for (int i=0; i<N/2; i++) {
			if (c[i] != c[N-1-i]) {
				ans = false;
				break;
			}
		}
		
		for (int i=0; i<(N/2)/2 ;i++) {
			if (c[i] != c[N/2-1-i]) {
				ans = false;
				break;
			}
		}
		System.out.println(ans ? "Yes" : "No");
	}
} import java.util.*; util.* java class Main{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		char[] c = sc.next().toCharArray();
		int N = c.length;
		boolean ans = true;
		
		for (int i=0; i<N/2; i++) {
			if (c[i] != c[N-1-i]) {
				ans = false;
				break;
			}
		}
		
		for (int i=0; i<(N/2)/2 ;i++) {
			if (c[i] != c[N/2-1-i]) {
				ans = false;
				break;
			}
		}
		System.out.println(ans ? "Yes" : "No");
	}
} Main public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		char[] c = sc.next().toCharArray();
		int N = c.length;
		boolean ans = true;
		
		for (int i=0; i<N/2; i++) {
			if (c[i] != c[N-1-i]) {
				ans = false;
				break;
			}
		}
		
		for (int i=0; i<(N/2)/2 ;i++) {
			if (c[i] != c[N/2-1-i]) {
				ans = false;
				break;
			}
		}
		System.out.println(ans ? "Yes" : "No");
	} main {
		Scanner sc = new Scanner(System.in);
		char[] c = sc.next().toCharArray();
		int N = c.length;
		boolean ans = true;
		
		for (int i=0; i<N/2; i++) {
			if (c[i] != c[N-1-i]) {
				ans = false;
				break;
			}
		}
		
		for (int i=0; i<(N/2)/2 ;i++) {
			if (c[i] != c[N/2-1-i]) {
				ans = false;
				break;
			}
		}
		System.out.println(ans ? "Yes" : "No");
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) char[] c = sc.next().toCharArray(); c sc.next().toCharArray() sc.next().toCharArray sc.next() sc.next sc int N = c.length; N c.length c c.length boolean ans = true; ans true for (int i=0; i<N/2; i++) {
			if (c[i] != c[N-1-i]) {
				ans = false;
				break;
			}
		} int i=0; int i=0; i 0 i<N/2 i N/2 N 2 i++ i++ i {
			if (c[i] != c[N-1-i]) {
				ans = false;
				break;
			}
		} {
			if (c[i] != c[N-1-i]) {
				ans = false;
				break;
			}
		} if (c[i] != c[N-1-i]) {
				ans = false;
				break;
			} c[i] != c[N-1-i] c[i] c i c[N-1-i] c N-1-i N-1-i N 1 i {
				ans = false;
				break;
			} ans = false ans false break; for (int i=0; i<(N/2)/2 ;i++) {
			if (c[i] != c[N/2-1-i]) {
				ans = false;
				break;
			}
		} int i=0; int i=0; i 0 i<(N/2)/2 i (N/2)/2 (N/2) N 2 2 i++ i++ i {
			if (c[i] != c[N/2-1-i]) {
				ans = false;
				break;
			}
		} {
			if (c[i] != c[N/2-1-i]) {
				ans = false;
				break;
			}
		} if (c[i] != c[N/2-1-i]) {
				ans = false;
				break;
			} c[i] != c[N/2-1-i] c[i] c i c[N/2-1-i] c N/2-1-i N/2-1-i N/2 N 2 1 i {
				ans = false;
				break;
			} ans = false ans false break; System.out.println(ans ? "Yes" : "No") System.out.println System.out System System.out ans ? "Yes" : "No" ans "Yes" "No" String[] args args
import java.util.*;
 
class Main{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		char[] c = sc.next().toCharArray();
		int N = c.length;
		boolean ans = true;
		
		for (int i=0; i<N/2; i++) {
			if (c[i] != c[N-1-i]) {
				ans = false;
				break;
			}
		}
		
		for (int i=0; i<(N/2)/2 ;i++) {
			if (c[i] != c[N/2-1-i]) {
				ans = false;
				break;
			}
		}
		System.out.println(ans ? "Yes" : "No");
	}
}