import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		int strlength = str.length();

		String str1 = str.substring(0, (strlength-1)/2);
		String str2 = str.substring((strlength-1)/2 +1,strlength);
		
		if(kaibunHantei(str) && kaibunHantei(str1) && kaibunHantei(str2)) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
		
	}
	
	public static boolean kaibunHantei(String str) {
		int strlength = str.length();
		String str1;
		String str2;
		if(strlength%2==1) {
			str1 = str.substring(0, (strlength-1)/2);
			str2 = str.substring((strlength-1)/2 +1,strlength);
		}else {
			str1 = str.substring(0, (strlength)/2);
			str2 = str.substring((strlength)/2 ,strlength);			
		}
		
		for(int i =0; i<str1.length(); i++) {
			char a = str1.charAt(i);
			char b =str2.charAt(str1.length()-1-i);
			if(a!=b) {
				return false;
			}
		}
		return true;		
	}
} import java.util.ArrayList; ArrayList java.util import java.util.List; List java.util import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		int strlength = str.length();

		String str1 = str.substring(0, (strlength-1)/2);
		String str2 = str.substring((strlength-1)/2 +1,strlength);
		
		if(kaibunHantei(str) && kaibunHantei(str1) && kaibunHantei(str2)) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
		
	}
	
	public static boolean kaibunHantei(String str) {
		int strlength = str.length();
		String str1;
		String str2;
		if(strlength%2==1) {
			str1 = str.substring(0, (strlength-1)/2);
			str2 = str.substring((strlength-1)/2 +1,strlength);
		}else {
			str1 = str.substring(0, (strlength)/2);
			str2 = str.substring((strlength)/2 ,strlength);			
		}
		
		for(int i =0; i<str1.length(); i++) {
			char a = str1.charAt(i);
			char b =str2.charAt(str1.length()-1-i);
			if(a!=b) {
				return false;
			}
		}
		return true;		
	}
} Main public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		int strlength = str.length();

		String str1 = str.substring(0, (strlength-1)/2);
		String str2 = str.substring((strlength-1)/2 +1,strlength);
		
		if(kaibunHantei(str) && kaibunHantei(str1) && kaibunHantei(str2)) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
		
	} main {

		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		int strlength = str.length();

		String str1 = str.substring(0, (strlength-1)/2);
		String str2 = str.substring((strlength-1)/2 +1,strlength);
		
		if(kaibunHantei(str) && kaibunHantei(str1) && kaibunHantei(str2)) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
		
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String str = sc.nextLine(); str sc.nextLine() sc.nextLine sc int strlength = str.length(); strlength str.length() str.length str String str1 = str.substring(0, (strlength-1)/2); str1 str.substring(0, (strlength-1)/2) str.substring str 0 (strlength-1)/2 (strlength-1) strlength 1 2 String str2 = str.substring((strlength-1)/2 +1,strlength); str2 str.substring((strlength-1)/2 +1,strlength) str.substring str (strlength-1)/2 +1 (strlength-1)/2 (strlength-1) strlength 1 2 1 strlength if(kaibunHantei(str) && kaibunHantei(str1) && kaibunHantei(str2)) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		} kaibunHantei(str) && kaibunHantei(str1) && kaibunHantei(str2) kaibunHantei(str) && kaibunHantei(str1) && kaibunHantei(str2) kaibunHantei(str) kaibunHantei str kaibunHantei(str1) kaibunHantei str1 kaibunHantei(str2) kaibunHantei str2 {
			System.out.println("Yes");
		} System.out.println("Yes") System.out.println 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 static boolean kaibunHantei(String str) {
		int strlength = str.length();
		String str1;
		String str2;
		if(strlength%2==1) {
			str1 = str.substring(0, (strlength-1)/2);
			str2 = str.substring((strlength-1)/2 +1,strlength);
		}else {
			str1 = str.substring(0, (strlength)/2);
			str2 = str.substring((strlength)/2 ,strlength);			
		}
		
		for(int i =0; i<str1.length(); i++) {
			char a = str1.charAt(i);
			char b =str2.charAt(str1.length()-1-i);
			if(a!=b) {
				return false;
			}
		}
		return true;		
	} kaibunHantei {
		int strlength = str.length();
		String str1;
		String str2;
		if(strlength%2==1) {
			str1 = str.substring(0, (strlength-1)/2);
			str2 = str.substring((strlength-1)/2 +1,strlength);
		}else {
			str1 = str.substring(0, (strlength)/2);
			str2 = str.substring((strlength)/2 ,strlength);			
		}
		
		for(int i =0; i<str1.length(); i++) {
			char a = str1.charAt(i);
			char b =str2.charAt(str1.length()-1-i);
			if(a!=b) {
				return false;
			}
		}
		return true;		
	} int strlength = str.length(); strlength str.length() str.length str String str1; str1 String str2; str2 if(strlength%2==1) {
			str1 = str.substring(0, (strlength-1)/2);
			str2 = str.substring((strlength-1)/2 +1,strlength);
		}else {
			str1 = str.substring(0, (strlength)/2);
			str2 = str.substring((strlength)/2 ,strlength);			
		} strlength%2==1 strlength%2 strlength 2 1 {
			str1 = str.substring(0, (strlength-1)/2);
			str2 = str.substring((strlength-1)/2 +1,strlength);
		} str1 = str.substring(0, (strlength-1)/2) str1 str.substring(0, (strlength-1)/2) str.substring str 0 (strlength-1)/2 (strlength-1) strlength 1 2 str2 = str.substring((strlength-1)/2 +1,strlength) str2 str.substring((strlength-1)/2 +1,strlength) str.substring str (strlength-1)/2 +1 (strlength-1)/2 (strlength-1) strlength 1 2 1 strlength {
			str1 = str.substring(0, (strlength)/2);
			str2 = str.substring((strlength)/2 ,strlength);			
		} str1 = str.substring(0, (strlength)/2) str1 str.substring(0, (strlength)/2) str.substring str 0 (strlength)/2 (strlength) 2 str2 = str.substring((strlength)/2 ,strlength) str2 str.substring((strlength)/2 ,strlength) str.substring str (strlength)/2 (strlength) 2 strlength for(int i =0; i<str1.length(); i++) {
			char a = str1.charAt(i);
			char b =str2.charAt(str1.length()-1-i);
			if(a!=b) {
				return false;
			}
		} int i =0; int i =0; i 0 i<str1.length() i str1.length() str1.length str1 i++ i++ i {
			char a = str1.charAt(i);
			char b =str2.charAt(str1.length()-1-i);
			if(a!=b) {
				return false;
			}
		} {
			char a = str1.charAt(i);
			char b =str2.charAt(str1.length()-1-i);
			if(a!=b) {
				return false;
			}
		} char a = str1.charAt(i); a str1.charAt(i) str1.charAt str1 i char b =str2.charAt(str1.length()-1-i); b str2.charAt(str1.length()-1-i) str2.charAt str2 str1.length()-1-i str1.length()-1-i str1.length() str1.length str1 1 i if(a!=b) {
				return false;
			} a!=b a b {
				return false;
			} return false; false return true; true String str str public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		int strlength = str.length();

		String str1 = str.substring(0, (strlength-1)/2);
		String str2 = str.substring((strlength-1)/2 +1,strlength);
		
		if(kaibunHantei(str) && kaibunHantei(str1) && kaibunHantei(str2)) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
		
	}
	
	public static boolean kaibunHantei(String str) {
		int strlength = str.length();
		String str1;
		String str2;
		if(strlength%2==1) {
			str1 = str.substring(0, (strlength-1)/2);
			str2 = str.substring((strlength-1)/2 +1,strlength);
		}else {
			str1 = str.substring(0, (strlength)/2);
			str2 = str.substring((strlength)/2 ,strlength);			
		}
		
		for(int i =0; i<str1.length(); i++) {
			char a = str1.charAt(i);
			char b =str2.charAt(str1.length()-1-i);
			if(a!=b) {
				return false;
			}
		}
		return true;		
	}
} public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		int strlength = str.length();

		String str1 = str.substring(0, (strlength-1)/2);
		String str2 = str.substring((strlength-1)/2 +1,strlength);
		
		if(kaibunHantei(str) && kaibunHantei(str1) && kaibunHantei(str2)) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
		
	}
	
	public static boolean kaibunHantei(String str) {
		int strlength = str.length();
		String str1;
		String str2;
		if(strlength%2==1) {
			str1 = str.substring(0, (strlength-1)/2);
			str2 = str.substring((strlength-1)/2 +1,strlength);
		}else {
			str1 = str.substring(0, (strlength)/2);
			str2 = str.substring((strlength)/2 ,strlength);			
		}
		
		for(int i =0; i<str1.length(); i++) {
			char a = str1.charAt(i);
			char b =str2.charAt(str1.length()-1-i);
			if(a!=b) {
				return false;
			}
		}
		return true;		
	}
} Main
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		int strlength = str.length();

		String str1 = str.substring(0, (strlength-1)/2);
		String str2 = str.substring((strlength-1)/2 +1,strlength);
		
		if(kaibunHantei(str) && kaibunHantei(str1) && kaibunHantei(str2)) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
		
	}
	
	public static boolean kaibunHantei(String str) {
		int strlength = str.length();
		String str1;
		String str2;
		if(strlength%2==1) {
			str1 = str.substring(0, (strlength-1)/2);
			str2 = str.substring((strlength-1)/2 +1,strlength);
		}else {
			str1 = str.substring(0, (strlength)/2);
			str2 = str.substring((strlength)/2 ,strlength);			
		}
		
		for(int i =0; i<str1.length(); i++) {
			char a = str1.charAt(i);
			char b =str2.charAt(str1.length()-1-i);
			if(a!=b) {
				return false;
			}
		}
		return true;		
	}
}