import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		String string = sc.nextLine();
		Main main = new Main();

		if (main.chkPalindrome(string) && main.chkPalindrome(string.substring(0, (string.length() - 1)/2)) && main.chkPalindrome(string.substring((string.length() + 2)/2,string.length()))) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
	}

	public boolean chkPalindrome(String string) {
		int len = string.length();
		int right = len - 1;
		int left = 0;
		while (true) {
			if (len % 2 == 0 && right < left) {
				break;
			}else if(len % 2 == 1 && right == left){
				break;
			}
			if (string.charAt(left) != string.charAt(right)) {
				return false;
			}
			left++;
			right--;
		}
		return true;
	}
} import java.util.Scanner; Scanner java.util public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		String string = sc.nextLine();
		Main main = new Main();

		if (main.chkPalindrome(string) && main.chkPalindrome(string.substring(0, (string.length() - 1)/2)) && main.chkPalindrome(string.substring((string.length() + 2)/2,string.length()))) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
	}

	public boolean chkPalindrome(String string) {
		int len = string.length();
		int right = len - 1;
		int left = 0;
		while (true) {
			if (len % 2 == 0 && right < left) {
				break;
			}else if(len % 2 == 1 && right == left){
				break;
			}
			if (string.charAt(left) != string.charAt(right)) {
				return false;
			}
			left++;
			right--;
		}
		return true;
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		String string = sc.nextLine();
		Main main = new Main();

		if (main.chkPalindrome(string) && main.chkPalindrome(string.substring(0, (string.length() - 1)/2)) && main.chkPalindrome(string.substring((string.length() + 2)/2,string.length()))) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
	} main {
		Scanner sc = new Scanner(System.in);

		String string = sc.nextLine();
		Main main = new Main();

		if (main.chkPalindrome(string) && main.chkPalindrome(string.substring(0, (string.length() - 1)/2)) && main.chkPalindrome(string.substring((string.length() + 2)/2,string.length()))) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String string = sc.nextLine(); string sc.nextLine() sc.nextLine sc Main main = new Main(); main new Main() if (main.chkPalindrome(string) && main.chkPalindrome(string.substring(0, (string.length() - 1)/2)) && main.chkPalindrome(string.substring((string.length() + 2)/2,string.length()))) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		} main.chkPalindrome(string) && main.chkPalindrome(string.substring(0, (string.length() - 1)/2)) && main.chkPalindrome(string.substring((string.length() + 2)/2,string.length())) main.chkPalindrome(string) && main.chkPalindrome(string.substring(0, (string.length() - 1)/2)) && main.chkPalindrome(string.substring((string.length() + 2)/2,string.length())) main.chkPalindrome(string) main.chkPalindrome main string main.chkPalindrome(string.substring(0, (string.length() - 1)/2)) main.chkPalindrome main string.substring(0, (string.length() - 1)/2) string.substring string 0 (string.length() - 1)/2 (string.length() - 1) string.length() string.length string 1 2 main.chkPalindrome(string.substring((string.length() + 2)/2,string.length())) main.chkPalindrome main string.substring((string.length() + 2)/2,string.length()) string.substring string (string.length() + 2)/2 (string.length() + 2) string.length() string.length string 2 2 string.length() string.length string {
			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 boolean chkPalindrome(String string) {
		int len = string.length();
		int right = len - 1;
		int left = 0;
		while (true) {
			if (len % 2 == 0 && right < left) {
				break;
			}else if(len % 2 == 1 && right == left){
				break;
			}
			if (string.charAt(left) != string.charAt(right)) {
				return false;
			}
			left++;
			right--;
		}
		return true;
	} chkPalindrome {
		int len = string.length();
		int right = len - 1;
		int left = 0;
		while (true) {
			if (len % 2 == 0 && right < left) {
				break;
			}else if(len % 2 == 1 && right == left){
				break;
			}
			if (string.charAt(left) != string.charAt(right)) {
				return false;
			}
			left++;
			right--;
		}
		return true;
	} int len = string.length(); len string.length() string.length string int right = len - 1; right len - 1 len 1 int left = 0; left 0 while (true) {
			if (len % 2 == 0 && right < left) {
				break;
			}else if(len % 2 == 1 && right == left){
				break;
			}
			if (string.charAt(left) != string.charAt(right)) {
				return false;
			}
			left++;
			right--;
		} true {
			if (len % 2 == 0 && right < left) {
				break;
			}else if(len % 2 == 1 && right == left){
				break;
			}
			if (string.charAt(left) != string.charAt(right)) {
				return false;
			}
			left++;
			right--;
		} if (len % 2 == 0 && right < left) {
				break;
			}else if(len % 2 == 1 && right == left){
				break;
			} len % 2 == 0 && right < left len % 2 == 0 len % 2 len 2 0 right < left right left {
				break;
			} break; if(len % 2 == 1 && right == left){
				break;
			} len % 2 == 1 && right == left len % 2 == 1 len % 2 len 2 1 right == left right left {
				break;
			} break; if (string.charAt(left) != string.charAt(right)) {
				return false;
			} string.charAt(left) != string.charAt(right) string.charAt(left) string.charAt string left string.charAt(right) string.charAt string right {
				return false;
			} return false; false left++ left right-- right return true; true String string string public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		String string = sc.nextLine();
		Main main = new Main();

		if (main.chkPalindrome(string) && main.chkPalindrome(string.substring(0, (string.length() - 1)/2)) && main.chkPalindrome(string.substring((string.length() + 2)/2,string.length()))) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
	}

	public boolean chkPalindrome(String string) {
		int len = string.length();
		int right = len - 1;
		int left = 0;
		while (true) {
			if (len % 2 == 0 && right < left) {
				break;
			}else if(len % 2 == 1 && right == left){
				break;
			}
			if (string.charAt(left) != string.charAt(right)) {
				return false;
			}
			left++;
			right--;
		}
		return true;
	}
} public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		String string = sc.nextLine();
		Main main = new Main();

		if (main.chkPalindrome(string) && main.chkPalindrome(string.substring(0, (string.length() - 1)/2)) && main.chkPalindrome(string.substring((string.length() + 2)/2,string.length()))) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
	}

	public boolean chkPalindrome(String string) {
		int len = string.length();
		int right = len - 1;
		int left = 0;
		while (true) {
			if (len % 2 == 0 && right < left) {
				break;
			}else if(len % 2 == 1 && right == left){
				break;
			}
			if (string.charAt(left) != string.charAt(right)) {
				return false;
			}
			left++;
			right--;
		}
		return true;
	}
} Main
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		String string = sc.nextLine();
		Main main = new Main();

		if (main.chkPalindrome(string) && main.chkPalindrome(string.substring(0, (string.length() - 1)/2)) && main.chkPalindrome(string.substring((string.length() + 2)/2,string.length()))) {
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
	}

	public boolean chkPalindrome(String string) {
		int len = string.length();
		int right = len - 1;
		int left = 0;
		while (true) {
			if (len % 2 == 0 && right < left) {
				break;
			}else if(len % 2 == 1 && right == left){
				break;
			}
			if (string.charAt(left) != string.charAt(right)) {
				return false;
			}
			left++;
			right--;
		}
		return true;
	}
}