import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		try(Scanner sc = new Scanner(System.in)) {
			
			String s = sc.next();
			
			int width = (s.length() - 1)/2;
			
			boolean isStrong = checkCircle(s) && checkCircle(s.substring(0, width)) &&
					checkCircle(s.substring(width + 1, s.length()));
			
			System.out.println(isStrong ? "Yes" : "No");
		}
	}
	
	public static boolean checkCircle(String s) {
		
//		System.out.println(s);
		
		for(int i = 0  ; i < (s.length()) / 2 ; i++ ) {
//			System.out.println(s.charAt(i));
			if ( s.charAt(i) == s.charAt(s.length()-1-i)) {
				//ok
			}
			else {
				return false;
			}
		}
		return true;
	}

} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args){
		try(Scanner sc = new Scanner(System.in)) {
			
			String s = sc.next();
			
			int width = (s.length() - 1)/2;
			
			boolean isStrong = checkCircle(s) && checkCircle(s.substring(0, width)) &&
					checkCircle(s.substring(width + 1, s.length()));
			
			System.out.println(isStrong ? "Yes" : "No");
		}
	}
	
	public static boolean checkCircle(String s) {
		
//		System.out.println(s);
		
		for(int i = 0  ; i < (s.length()) / 2 ; i++ ) {
//			System.out.println(s.charAt(i));
			if ( s.charAt(i) == s.charAt(s.length()-1-i)) {
				//ok
			}
			else {
				return false;
			}
		}
		return true;
	}

} Main public static void main(String[] args){
		try(Scanner sc = new Scanner(System.in)) {
			
			String s = sc.next();
			
			int width = (s.length() - 1)/2;
			
			boolean isStrong = checkCircle(s) && checkCircle(s.substring(0, width)) &&
					checkCircle(s.substring(width + 1, s.length()));
			
			System.out.println(isStrong ? "Yes" : "No");
		}
	} main {
		try(Scanner sc = new Scanner(System.in)) {
			
			String s = sc.next();
			
			int width = (s.length() - 1)/2;
			
			boolean isStrong = checkCircle(s) && checkCircle(s.substring(0, width)) &&
					checkCircle(s.substring(width + 1, s.length()));
			
			System.out.println(isStrong ? "Yes" : "No");
		}
	} try(Scanner sc = new Scanner(System.in)) {
			
			String s = sc.next();
			
			int width = (s.length() - 1)/2;
			
			boolean isStrong = checkCircle(s) && checkCircle(s.substring(0, width)) &&
					checkCircle(s.substring(width + 1, s.length()));
			
			System.out.println(isStrong ? "Yes" : "No");
		} {
			
			String s = sc.next();
			
			int width = (s.length() - 1)/2;
			
			boolean isStrong = checkCircle(s) && checkCircle(s.substring(0, width)) &&
					checkCircle(s.substring(width + 1, s.length()));
			
			System.out.println(isStrong ? "Yes" : "No");
		} Scanner sc = new Scanner(System.in) Scanner sc = new Scanner(System.in) new Scanner(System.in) String s = sc.next(); s sc.next() sc.next sc int width = (s.length() - 1)/2; width (s.length() - 1)/2 (s.length() - 1) s.length() s.length s 1 2 boolean isStrong = checkCircle(s) && checkCircle(s.substring(0, width)) &&
					checkCircle(s.substring(width + 1, s.length())); isStrong checkCircle(s) && checkCircle(s.substring(0, width)) &&
					checkCircle(s.substring(width + 1, s.length())) checkCircle(s) && checkCircle(s.substring(0, width)) &&
					checkCircle(s.substring(width + 1, s.length())) checkCircle(s) checkCircle s checkCircle(s.substring(0, width)) checkCircle s.substring(0, width) s.substring s 0 width checkCircle(s.substring(width + 1, s.length())) checkCircle s.substring(width + 1, s.length()) s.substring s width + 1 width 1 s.length() s.length s System.out.println(isStrong ? "Yes" : "No") System.out.println System.out System System.out isStrong ? "Yes" : "No" isStrong "Yes" "No" String[] args args public static boolean checkCircle(String s) {
		
//		System.out.println(s);
		
		for(int i = 0  ; i < (s.length()) / 2 ; i++ ) {
//			System.out.println(s.charAt(i));
			if ( s.charAt(i) == s.charAt(s.length()-1-i)) {
				//ok
			}
			else {
				return false;
			}
		}
		return true;
	} checkCircle {
		
//		System.out.println(s);
		
		for(int i = 0  ; i < (s.length()) / 2 ; i++ ) {
//			System.out.println(s.charAt(i));
			if ( s.charAt(i) == s.charAt(s.length()-1-i)) {
				//ok
			}
			else {
				return false;
			}
		}
		return true;
	} for(int i = 0  ; i < (s.length()) / 2 ; i++ ) {
//			System.out.println(s.charAt(i));
			if ( s.charAt(i) == s.charAt(s.length()-1-i)) {
				//ok
			}
			else {
				return false;
			}
		} int i = 0  ; int i = 0  ; i 0 i < (s.length()) / 2 i (s.length()) / 2 (s.length()) s.length s 2 i++ i++ i {
//			System.out.println(s.charAt(i));
			if ( s.charAt(i) == s.charAt(s.length()-1-i)) {
				//ok
			}
			else {
				return false;
			}
		} {
//			System.out.println(s.charAt(i));
			if ( s.charAt(i) == s.charAt(s.length()-1-i)) {
				//ok
			}
			else {
				return false;
			}
		} if ( s.charAt(i) == s.charAt(s.length()-1-i)) {
				//ok
			}
			else {
				return false;
			} s.charAt(i) == s.charAt(s.length()-1-i) s.charAt(i) s.charAt s i s.charAt(s.length()-1-i) s.charAt s s.length()-1-i s.length()-1-i s.length() s.length s 1 i {
				//ok
			} {
				return false;
			} return false; false return true; true String s s public class Main {
	public static void main(String[] args){
		try(Scanner sc = new Scanner(System.in)) {
			
			String s = sc.next();
			
			int width = (s.length() - 1)/2;
			
			boolean isStrong = checkCircle(s) && checkCircle(s.substring(0, width)) &&
					checkCircle(s.substring(width + 1, s.length()));
			
			System.out.println(isStrong ? "Yes" : "No");
		}
	}
	
	public static boolean checkCircle(String s) {
		
//		System.out.println(s);
		
		for(int i = 0  ; i < (s.length()) / 2 ; i++ ) {
//			System.out.println(s.charAt(i));
			if ( s.charAt(i) == s.charAt(s.length()-1-i)) {
				//ok
			}
			else {
				return false;
			}
		}
		return true;
	}

} public class Main {
	public static void main(String[] args){
		try(Scanner sc = new Scanner(System.in)) {
			
			String s = sc.next();
			
			int width = (s.length() - 1)/2;
			
			boolean isStrong = checkCircle(s) && checkCircle(s.substring(0, width)) &&
					checkCircle(s.substring(width + 1, s.length()));
			
			System.out.println(isStrong ? "Yes" : "No");
		}
	}
	
	public static boolean checkCircle(String s) {
		
//		System.out.println(s);
		
		for(int i = 0  ; i < (s.length()) / 2 ; i++ ) {
//			System.out.println(s.charAt(i));
			if ( s.charAt(i) == s.charAt(s.length()-1-i)) {
				//ok
			}
			else {
				return false;
			}
		}
		return true;
	}

} Main
import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		try(Scanner sc = new Scanner(System.in)) {
			
			String s = sc.next();
			
			int width = (s.length() - 1)/2;
			
			boolean isStrong = checkCircle(s) && checkCircle(s.substring(0, width)) &&
					checkCircle(s.substring(width + 1, s.length()));
			
			System.out.println(isStrong ? "Yes" : "No");
		}
	}
	
	public static boolean checkCircle(String s) {
		
//		System.out.println(s);
		
		for(int i = 0  ; i < (s.length()) / 2 ; i++ ) {
//			System.out.println(s.charAt(i));
			if ( s.charAt(i) == s.charAt(s.length()-1-i)) {
				//ok
			}
			else {
				return false;
			}
		}
		return true;
	}

}