import java.util.*;

class Main {
  public static void main (String[] args) throws java.lang.Exception {
    Scanner scanner = new Scanner(System.in);
    String argument = scanner.next();
    boolean result = ATCoder_abc159_b.isStrongPalindrome(argument);
    System.out.printf("%s\n", result ? "Yes" : "No");
  }
}

class ATCoder_abc159_b {
	public static boolean isStrongPalindrome(String argument) {
		char[] argumentChars = argument.toCharArray();
		int halfwayLength = (argumentChars.length-1 ) / 2;
		int fullLength = argumentChars.length;
		for (int pos=0; pos < halfwayLength; ++pos) {
			// String must be a palindrome
			if (argumentChars[pos] != argumentChars[fullLength-pos-1]) {
				return false;
			}
			// First 'half' of string must be a palindrome
			if (argumentChars[pos] != argumentChars[halfwayLength-pos-1]) {
				return false;
			}
		}
		return true;
	}
} import java.util.*; util.* java class Main {
  public static void main (String[] args) throws java.lang.Exception {
    Scanner scanner = new Scanner(System.in);
    String argument = scanner.next();
    boolean result = ATCoder_abc159_b.isStrongPalindrome(argument);
    System.out.printf("%s\n", result ? "Yes" : "No");
  }
} Main public static void main (String[] args) throws java.lang.Exception {
    Scanner scanner = new Scanner(System.in);
    String argument = scanner.next();
    boolean result = ATCoder_abc159_b.isStrongPalindrome(argument);
    System.out.printf("%s\n", result ? "Yes" : "No");
  } main {
    Scanner scanner = new Scanner(System.in);
    String argument = scanner.next();
    boolean result = ATCoder_abc159_b.isStrongPalindrome(argument);
    System.out.printf("%s\n", result ? "Yes" : "No");
  } Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) String argument = scanner.next(); argument scanner.next() scanner.next scanner boolean result = ATCoder_abc159_b.isStrongPalindrome(argument); result ATCoder_abc159_b.isStrongPalindrome(argument) ATCoder_abc159_b.isStrongPalindrome ATCoder_abc159_b argument System.out.printf("%s\n", result ? "Yes" : "No") System.out.printf System.out System System.out "%s\n" result ? "Yes" : "No" result "Yes" "No" String[] args args class ATCoder_abc159_b {
	public static boolean isStrongPalindrome(String argument) {
		char[] argumentChars = argument.toCharArray();
		int halfwayLength = (argumentChars.length-1 ) / 2;
		int fullLength = argumentChars.length;
		for (int pos=0; pos < halfwayLength; ++pos) {
			// String must be a palindrome
			if (argumentChars[pos] != argumentChars[fullLength-pos-1]) {
				return false;
			}
			// First 'half' of string must be a palindrome
			if (argumentChars[pos] != argumentChars[halfwayLength-pos-1]) {
				return false;
			}
		}
		return true;
	}
} ATCoder_abc159_b public static boolean isStrongPalindrome(String argument) {
		char[] argumentChars = argument.toCharArray();
		int halfwayLength = (argumentChars.length-1 ) / 2;
		int fullLength = argumentChars.length;
		for (int pos=0; pos < halfwayLength; ++pos) {
			// String must be a palindrome
			if (argumentChars[pos] != argumentChars[fullLength-pos-1]) {
				return false;
			}
			// First 'half' of string must be a palindrome
			if (argumentChars[pos] != argumentChars[halfwayLength-pos-1]) {
				return false;
			}
		}
		return true;
	} isStrongPalindrome {
		char[] argumentChars = argument.toCharArray();
		int halfwayLength = (argumentChars.length-1 ) / 2;
		int fullLength = argumentChars.length;
		for (int pos=0; pos < halfwayLength; ++pos) {
			// String must be a palindrome
			if (argumentChars[pos] != argumentChars[fullLength-pos-1]) {
				return false;
			}
			// First 'half' of string must be a palindrome
			if (argumentChars[pos] != argumentChars[halfwayLength-pos-1]) {
				return false;
			}
		}
		return true;
	} char[] argumentChars = argument.toCharArray(); argumentChars argument.toCharArray() argument.toCharArray argument int halfwayLength = (argumentChars.length-1 ) / 2; halfwayLength (argumentChars.length-1 ) / 2 (argumentChars.length-1 ) argumentChars.length argumentChars argumentChars.length 1 2 int fullLength = argumentChars.length; fullLength argumentChars.length argumentChars argumentChars.length for (int pos=0; pos < halfwayLength; ++pos) {
			// String must be a palindrome
			if (argumentChars[pos] != argumentChars[fullLength-pos-1]) {
				return false;
			}
			// First 'half' of string must be a palindrome
			if (argumentChars[pos] != argumentChars[halfwayLength-pos-1]) {
				return false;
			}
		} int pos=0; int pos=0; pos 0 pos < halfwayLength pos halfwayLength ++pos ++pos pos {
			// String must be a palindrome
			if (argumentChars[pos] != argumentChars[fullLength-pos-1]) {
				return false;
			}
			// First 'half' of string must be a palindrome
			if (argumentChars[pos] != argumentChars[halfwayLength-pos-1]) {
				return false;
			}
		} {
			// String must be a palindrome
			if (argumentChars[pos] != argumentChars[fullLength-pos-1]) {
				return false;
			}
			// First 'half' of string must be a palindrome
			if (argumentChars[pos] != argumentChars[halfwayLength-pos-1]) {
				return false;
			}
		} if (argumentChars[pos] != argumentChars[fullLength-pos-1]) {
				return false;
			} argumentChars[pos] != argumentChars[fullLength-pos-1] argumentChars[pos] argumentChars pos argumentChars[fullLength-pos-1] argumentChars fullLength-pos-1 fullLength-pos-1 fullLength pos 1 {
				return false;
			} return false; false if (argumentChars[pos] != argumentChars[halfwayLength-pos-1]) {
				return false;
			} argumentChars[pos] != argumentChars[halfwayLength-pos-1] argumentChars[pos] argumentChars pos argumentChars[halfwayLength-pos-1] argumentChars halfwayLength-pos-1 halfwayLength-pos-1 halfwayLength pos 1 {
				return false;
			} return false; false return true; true String argument argument
import java.util.*;

class Main {
  public static void main (String[] args) throws java.lang.Exception {
    Scanner scanner = new Scanner(System.in);
    String argument = scanner.next();
    boolean result = ATCoder_abc159_b.isStrongPalindrome(argument);
    System.out.printf("%s\n", result ? "Yes" : "No");
  }
}

class ATCoder_abc159_b {
	public static boolean isStrongPalindrome(String argument) {
		char[] argumentChars = argument.toCharArray();
		int halfwayLength = (argumentChars.length-1 ) / 2;
		int fullLength = argumentChars.length;
		for (int pos=0; pos < halfwayLength; ++pos) {
			// String must be a palindrome
			if (argumentChars[pos] != argumentChars[fullLength-pos-1]) {
				return false;
			}
			// First 'half' of string must be a palindrome
			if (argumentChars[pos] != argumentChars[halfwayLength-pos-1]) {
				return false;
			}
		}
		return true;
	}
}
