import java.util.*;
 
public class Main {
 	public static void main(String[] args){
    	Scanner sc = new Scanner(System.in);
		String str = sc.next();
		String[] S = str.split("");
		//System.out.println(S[0]);
		for(int i=0; i<S.length; i++){
			if(!(S[i].equals(S[S.length-1-i]))){
				System.out.println("No");
				return;
			}
			if(i<(S.length-1)/2-1-i){
				if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				}
			}
			if(i>=(S.length+3)/2-1&&i<((S.length+3)/2+S.length)/2){
				if(!(S[i].equals(S[S.length-1-i]))){
					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 str = sc.next();
		String[] S = str.split("");
		//System.out.println(S[0]);
		for(int i=0; i<S.length; i++){
			if(!(S[i].equals(S[S.length-1-i]))){
				System.out.println("No");
				return;
			}
			if(i<(S.length-1)/2-1-i){
				if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				}
			}
			if(i>=(S.length+3)/2-1&&i<((S.length+3)/2+S.length)/2){
				if(!(S[i].equals(S[S.length-1-i]))){
					System.out.println("No");
					return;
				}
			}
		}
		System.out.println("Yes");
	}
} Main public static void main(String[] args){
    	Scanner sc = new Scanner(System.in);
		String str = sc.next();
		String[] S = str.split("");
		//System.out.println(S[0]);
		for(int i=0; i<S.length; i++){
			if(!(S[i].equals(S[S.length-1-i]))){
				System.out.println("No");
				return;
			}
			if(i<(S.length-1)/2-1-i){
				if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				}
			}
			if(i>=(S.length+3)/2-1&&i<((S.length+3)/2+S.length)/2){
				if(!(S[i].equals(S[S.length-1-i]))){
					System.out.println("No");
					return;
				}
			}
		}
		System.out.println("Yes");
	} main {
    	Scanner sc = new Scanner(System.in);
		String str = sc.next();
		String[] S = str.split("");
		//System.out.println(S[0]);
		for(int i=0; i<S.length; i++){
			if(!(S[i].equals(S[S.length-1-i]))){
				System.out.println("No");
				return;
			}
			if(i<(S.length-1)/2-1-i){
				if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				}
			}
			if(i>=(S.length+3)/2-1&&i<((S.length+3)/2+S.length)/2){
				if(!(S[i].equals(S[S.length-1-i]))){
					System.out.println("No");
					return;
				}
			}
		}
		System.out.println("Yes");
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String str = sc.next(); str sc.next() sc.next sc String[] S = str.split(""); S str.split("") str.split str "" for(int i=0; i<S.length; i++){
			if(!(S[i].equals(S[S.length-1-i]))){
				System.out.println("No");
				return;
			}
			if(i<(S.length-1)/2-1-i){
				if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				}
			}
			if(i>=(S.length+3)/2-1&&i<((S.length+3)/2+S.length)/2){
				if(!(S[i].equals(S[S.length-1-i]))){
					System.out.println("No");
					return;
				}
			}
		} int i=0; int i=0; i 0 i<S.length i S.length S S.length i++ i++ i {
			if(!(S[i].equals(S[S.length-1-i]))){
				System.out.println("No");
				return;
			}
			if(i<(S.length-1)/2-1-i){
				if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				}
			}
			if(i>=(S.length+3)/2-1&&i<((S.length+3)/2+S.length)/2){
				if(!(S[i].equals(S[S.length-1-i]))){
					System.out.println("No");
					return;
				}
			}
		} {
			if(!(S[i].equals(S[S.length-1-i]))){
				System.out.println("No");
				return;
			}
			if(i<(S.length-1)/2-1-i){
				if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				}
			}
			if(i>=(S.length+3)/2-1&&i<((S.length+3)/2+S.length)/2){
				if(!(S[i].equals(S[S.length-1-i]))){
					System.out.println("No");
					return;
				}
			}
		} if(!(S[i].equals(S[S.length-1-i]))){
				System.out.println("No");
				return;
			} !(S[i].equals(S[S.length-1-i])) (S[i].equals(S[S.length-1-i])) S[i].equals 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");
				return;
			} System.out.println("No") System.out.println System.out System System.out "No" return; if(i<(S.length-1)/2-1-i){
				if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				}
			} i<(S.length-1)/2-1-i i (S.length-1)/2-1-i (S.length-1)/2-1-i (S.length-1)/2 (S.length-1) S.length S S.length 1 2 1 i {
				if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				}
			} if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				} !(S[i].equals(S[(S.length-1)/2-1-i])) (S[i].equals(S[(S.length-1)/2-1-i])) S[i].equals S[i] S i S[(S.length-1)/2-1-i] S (S.length-1)/2-1-i (S.length-1)/2-1-i (S.length-1)/2 (S.length-1) S.length S S.length 1 2 1 i {
					System.out.println("No");
					return;
				} System.out.println("No") System.out.println System.out System System.out "No" return; if(i>=(S.length+3)/2-1&&i<((S.length+3)/2+S.length)/2){
				if(!(S[i].equals(S[S.length-1-i]))){
					System.out.println("No");
					return;
				}
			} i>=(S.length+3)/2-1&&i<((S.length+3)/2+S.length)/2 i>=(S.length+3)/2-1 i (S.length+3)/2-1 (S.length+3)/2 (S.length+3) S.length S S.length 3 2 1 i<((S.length+3)/2+S.length)/2 i ((S.length+3)/2+S.length)/2 ((S.length+3)/2+S.length) (S.length+3)/2 (S.length+3) S.length S S.length 3 2 S.length S S.length 2 {
				if(!(S[i].equals(S[S.length-1-i]))){
					System.out.println("No");
					return;
				}
			} if(!(S[i].equals(S[S.length-1-i]))){
					System.out.println("No");
					return;
				} !(S[i].equals(S[S.length-1-i])) (S[i].equals(S[S.length-1-i])) S[i].equals 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");
					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 str = sc.next();
		String[] S = str.split("");
		//System.out.println(S[0]);
		for(int i=0; i<S.length; i++){
			if(!(S[i].equals(S[S.length-1-i]))){
				System.out.println("No");
				return;
			}
			if(i<(S.length-1)/2-1-i){
				if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				}
			}
			if(i>=(S.length+3)/2-1&&i<((S.length+3)/2+S.length)/2){
				if(!(S[i].equals(S[S.length-1-i]))){
					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 str = sc.next();
		String[] S = str.split("");
		//System.out.println(S[0]);
		for(int i=0; i<S.length; i++){
			if(!(S[i].equals(S[S.length-1-i]))){
				System.out.println("No");
				return;
			}
			if(i<(S.length-1)/2-1-i){
				if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				}
			}
			if(i>=(S.length+3)/2-1&&i<((S.length+3)/2+S.length)/2){
				if(!(S[i].equals(S[S.length-1-i]))){
					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 str = sc.next();
		String[] S = str.split("");
		//System.out.println(S[0]);
		for(int i=0; i<S.length; i++){
			if(!(S[i].equals(S[S.length-1-i]))){
				System.out.println("No");
				return;
			}
			if(i<(S.length-1)/2-1-i){
				if(!(S[i].equals(S[(S.length-1)/2-1-i]))){
					System.out.println("No");
					return;
				}
			}
			if(i>=(S.length+3)/2-1&&i<((S.length+3)/2+S.length)/2){
				if(!(S[i].equals(S[S.length-1-i]))){
					System.out.println("No");
					return;
				}
			}
		}
		System.out.println("Yes");
	}
}
