import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		String s1 = s.substring(0, (s.length() - 1) / 2);
		String s2 = s.substring(((s.length() + 3) / 2) - 1, s.length());
		if (s.equals(new StringBuffer(s).reverse().toString()) && s1.equals(new StringBuffer(s1).reverse().toString())
				&& s2.equals(new StringBuffer(s2).reverse().toString())) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}
} import java.util.*; util.* java public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		String s1 = s.substring(0, (s.length() - 1) / 2);
		String s2 = s.substring(((s.length() + 3) / 2) - 1, s.length());
		if (s.equals(new StringBuffer(s).reverse().toString()) && s1.equals(new StringBuffer(s1).reverse().toString())
				&& s2.equals(new StringBuffer(s2).reverse().toString())) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		String s1 = s.substring(0, (s.length() - 1) / 2);
		String s2 = s.substring(((s.length() + 3) / 2) - 1, s.length());
		if (s.equals(new StringBuffer(s).reverse().toString()) && s1.equals(new StringBuffer(s1).reverse().toString())
				&& s2.equals(new StringBuffer(s2).reverse().toString())) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	} main {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		String s1 = s.substring(0, (s.length() - 1) / 2);
		String s2 = s.substring(((s.length() + 3) / 2) - 1, s.length());
		if (s.equals(new StringBuffer(s).reverse().toString()) && s1.equals(new StringBuffer(s1).reverse().toString())
				&& s2.equals(new StringBuffer(s2).reverse().toString())) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String s = sc.next(); s sc.next() sc.next sc String s1 = s.substring(0, (s.length() - 1) / 2); s1 s.substring(0, (s.length() - 1) / 2) s.substring s 0 (s.length() - 1) / 2 (s.length() - 1) s.length() s.length s 1 2 String s2 = s.substring(((s.length() + 3) / 2) - 1, s.length()); s2 s.substring(((s.length() + 3) / 2) - 1, s.length()) s.substring s ((s.length() + 3) / 2) - 1 ((s.length() + 3) / 2) (s.length() + 3) s.length() s.length s 3 2 1 s.length() s.length s if (s.equals(new StringBuffer(s).reverse().toString()) && s1.equals(new StringBuffer(s1).reverse().toString())
				&& s2.equals(new StringBuffer(s2).reverse().toString())) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		} s.equals(new StringBuffer(s).reverse().toString()) && s1.equals(new StringBuffer(s1).reverse().toString())
				&& s2.equals(new StringBuffer(s2).reverse().toString()) s.equals(new StringBuffer(s).reverse().toString()) && s1.equals(new StringBuffer(s1).reverse().toString())
				&& s2.equals(new StringBuffer(s2).reverse().toString()) s.equals(new StringBuffer(s).reverse().toString()) s.equals s new StringBuffer(s).reverse().toString() new StringBuffer(s).reverse().toString new StringBuffer(s).reverse() new StringBuffer(s).reverse new StringBuffer(s) s1.equals(new StringBuffer(s1).reverse().toString()) s1.equals s1 new StringBuffer(s1).reverse().toString() new StringBuffer(s1).reverse().toString new StringBuffer(s1).reverse() new StringBuffer(s1).reverse new StringBuffer(s1) s2.equals(new StringBuffer(s2).reverse().toString()) s2.equals s2 new StringBuffer(s2).reverse().toString() new StringBuffer(s2).reverse().toString new StringBuffer(s2).reverse() new StringBuffer(s2).reverse new StringBuffer(s2) {
			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 class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		String s1 = s.substring(0, (s.length() - 1) / 2);
		String s2 = s.substring(((s.length() + 3) / 2) - 1, s.length());
		if (s.equals(new StringBuffer(s).reverse().toString()) && s1.equals(new StringBuffer(s1).reverse().toString())
				&& s2.equals(new StringBuffer(s2).reverse().toString())) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}
} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		String s1 = s.substring(0, (s.length() - 1) / 2);
		String s2 = s.substring(((s.length() + 3) / 2) - 1, s.length());
		if (s.equals(new StringBuffer(s).reverse().toString()) && s1.equals(new StringBuffer(s1).reverse().toString())
				&& s2.equals(new StringBuffer(s2).reverse().toString())) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}
} Main
import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String s = sc.next();
		String s1 = s.substring(0, (s.length() - 1) / 2);
		String s2 = s.substring(((s.length() + 3) / 2) - 1, s.length());
		if (s.equals(new StringBuffer(s).reverse().toString()) && s1.equals(new StringBuffer(s1).reverse().toString())
				&& s2.equals(new StringBuffer(s2).reverse().toString())) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}
}