import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		char[] s = sc.next().toCharArray();
		boolean same = true;
		for(int i = 0; i < s.length; i++) {
			if(s[i] != s[s.length - 1 - i]){
				System.out.println("No");
				System.exit(0);
			}
		}
		for(int j = 0; j <= (s.length - 2) / 2; j++) {
			if(s[j] != s[(s.length - 2) / 2 - j]){
				System.out.println("No");
				System.exit(0);
			}
		}
		int count = 0;
		for(int a = (s.length + 2) / 2; a < s.length; a++){
		if(s[a] != s[(s.length - 2) / 2 - count]){
			System.out.println("No");
			System.exit(0);
		}
		count++;
	}
		System.out.println("Yes");
	}
} import java.util.*; util.* java public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		char[] s = sc.next().toCharArray();
		boolean same = true;
		for(int i = 0; i < s.length; i++) {
			if(s[i] != s[s.length - 1 - i]){
				System.out.println("No");
				System.exit(0);
			}
		}
		for(int j = 0; j <= (s.length - 2) / 2; j++) {
			if(s[j] != s[(s.length - 2) / 2 - j]){
				System.out.println("No");
				System.exit(0);
			}
		}
		int count = 0;
		for(int a = (s.length + 2) / 2; a < s.length; a++){
		if(s[a] != s[(s.length - 2) / 2 - count]){
			System.out.println("No");
			System.exit(0);
		}
		count++;
	}
		System.out.println("Yes");
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		char[] s = sc.next().toCharArray();
		boolean same = true;
		for(int i = 0; i < s.length; i++) {
			if(s[i] != s[s.length - 1 - i]){
				System.out.println("No");
				System.exit(0);
			}
		}
		for(int j = 0; j <= (s.length - 2) / 2; j++) {
			if(s[j] != s[(s.length - 2) / 2 - j]){
				System.out.println("No");
				System.exit(0);
			}
		}
		int count = 0;
		for(int a = (s.length + 2) / 2; a < s.length; a++){
		if(s[a] != s[(s.length - 2) / 2 - count]){
			System.out.println("No");
			System.exit(0);
		}
		count++;
	}
		System.out.println("Yes");
	} main {
		Scanner sc = new Scanner(System.in);
		char[] s = sc.next().toCharArray();
		boolean same = true;
		for(int i = 0; i < s.length; i++) {
			if(s[i] != s[s.length - 1 - i]){
				System.out.println("No");
				System.exit(0);
			}
		}
		for(int j = 0; j <= (s.length - 2) / 2; j++) {
			if(s[j] != s[(s.length - 2) / 2 - j]){
				System.out.println("No");
				System.exit(0);
			}
		}
		int count = 0;
		for(int a = (s.length + 2) / 2; a < s.length; a++){
		if(s[a] != s[(s.length - 2) / 2 - count]){
			System.out.println("No");
			System.exit(0);
		}
		count++;
	}
		System.out.println("Yes");
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) char[] s = sc.next().toCharArray(); s sc.next().toCharArray() sc.next().toCharArray sc.next() sc.next sc boolean same = true; same true for(int i = 0; i < s.length; i++) {
			if(s[i] != s[s.length - 1 - i]){
				System.out.println("No");
				System.exit(0);
			}
		} int i = 0; int i = 0; i 0 i < s.length i s.length s s.length i++ i++ i {
			if(s[i] != s[s.length - 1 - i]){
				System.out.println("No");
				System.exit(0);
			}
		} {
			if(s[i] != s[s.length - 1 - i]){
				System.out.println("No");
				System.exit(0);
			}
		} if(s[i] != s[s.length - 1 - i]){
				System.out.println("No");
				System.exit(0);
			} s[i] != s[s.length - 1 - i] s[i] s i s[s.length - 1 - i] s s.length - 1 - i s.length - 1 - i s.length s s.length 1 i {
				System.out.println("No");
				System.exit(0);
			} System.out.println("No") System.out.println System.out System System.out "No" System.exit(0) System.exit System 0 for(int j = 0; j <= (s.length - 2) / 2; j++) {
			if(s[j] != s[(s.length - 2) / 2 - j]){
				System.out.println("No");
				System.exit(0);
			}
		} int j = 0; int j = 0; j 0 j <= (s.length - 2) / 2 j (s.length - 2) / 2 (s.length - 2) s.length s s.length 2 2 j++ j++ j {
			if(s[j] != s[(s.length - 2) / 2 - j]){
				System.out.println("No");
				System.exit(0);
			}
		} {
			if(s[j] != s[(s.length - 2) / 2 - j]){
				System.out.println("No");
				System.exit(0);
			}
		} if(s[j] != s[(s.length - 2) / 2 - j]){
				System.out.println("No");
				System.exit(0);
			} s[j] != s[(s.length - 2) / 2 - j] s[j] s j s[(s.length - 2) / 2 - j] s (s.length - 2) / 2 - j (s.length - 2) / 2 (s.length - 2) s.length s s.length 2 2 j {
				System.out.println("No");
				System.exit(0);
			} System.out.println("No") System.out.println System.out System System.out "No" System.exit(0) System.exit System 0 int count = 0; count 0 for(int a = (s.length + 2) / 2; a < s.length; a++){
		if(s[a] != s[(s.length - 2) / 2 - count]){
			System.out.println("No");
			System.exit(0);
		}
		count++;
	} int a = (s.length + 2) / 2; int a = (s.length + 2) / 2; a (s.length + 2) / 2 (s.length + 2) s.length s s.length 2 2 a < s.length a s.length s s.length a++ a++ a {
		if(s[a] != s[(s.length - 2) / 2 - count]){
			System.out.println("No");
			System.exit(0);
		}
		count++;
	} {
		if(s[a] != s[(s.length - 2) / 2 - count]){
			System.out.println("No");
			System.exit(0);
		}
		count++;
	} if(s[a] != s[(s.length - 2) / 2 - count]){
			System.out.println("No");
			System.exit(0);
		} s[a] != s[(s.length - 2) / 2 - count] s[a] s a s[(s.length - 2) / 2 - count] s (s.length - 2) / 2 - count (s.length - 2) / 2 (s.length - 2) s.length s s.length 2 2 count {
			System.out.println("No");
			System.exit(0);
		} System.out.println("No") System.out.println System.out System System.out "No" System.exit(0) System.exit System 0 count++ count 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);
		char[] s = sc.next().toCharArray();
		boolean same = true;
		for(int i = 0; i < s.length; i++) {
			if(s[i] != s[s.length - 1 - i]){
				System.out.println("No");
				System.exit(0);
			}
		}
		for(int j = 0; j <= (s.length - 2) / 2; j++) {
			if(s[j] != s[(s.length - 2) / 2 - j]){
				System.out.println("No");
				System.exit(0);
			}
		}
		int count = 0;
		for(int a = (s.length + 2) / 2; a < s.length; a++){
		if(s[a] != s[(s.length - 2) / 2 - count]){
			System.out.println("No");
			System.exit(0);
		}
		count++;
	}
		System.out.println("Yes");
	}
} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		char[] s = sc.next().toCharArray();
		boolean same = true;
		for(int i = 0; i < s.length; i++) {
			if(s[i] != s[s.length - 1 - i]){
				System.out.println("No");
				System.exit(0);
			}
		}
		for(int j = 0; j <= (s.length - 2) / 2; j++) {
			if(s[j] != s[(s.length - 2) / 2 - j]){
				System.out.println("No");
				System.exit(0);
			}
		}
		int count = 0;
		for(int a = (s.length + 2) / 2; a < s.length; a++){
		if(s[a] != s[(s.length - 2) / 2 - count]){
			System.out.println("No");
			System.exit(0);
		}
		count++;
	}
		System.out.println("Yes");
	}
} Main
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		char[] s = sc.next().toCharArray();
		boolean same = true;
		for(int i = 0; i < s.length; i++) {
			if(s[i] != s[s.length - 1 - i]){
				System.out.println("No");
				System.exit(0);
			}
		}
		for(int j = 0; j <= (s.length - 2) / 2; j++) {
			if(s[j] != s[(s.length - 2) / 2 - j]){
				System.out.println("No");
				System.exit(0);
			}
		}
		int count = 0;
		for(int a = (s.length + 2) / 2; a < s.length; a++){
		if(s[a] != s[(s.length - 2) / 2 - count]){
			System.out.println("No");
			System.exit(0);
		}
		count++;
	}
		System.out.println("Yes");
	}
}