import java.util.Scanner;
public class Main{

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s = new String(in.nextLine());
		boolean f1=huiwen(s);
		boolean f2=huiwen(s.substring(0, (s.length()-1)/2));
		boolean f3=huiwen(s.substring((s.length()+3)/2-1, s.length()));
		if(f1&&f2&&f3) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	}
	public static boolean huiwen(String ss) {
		StringBuffer a = new StringBuffer(ss);
		String s1 = a.toString();
		String s2 = a.reverse().toString();
		return s1.equals(s2);
	}
} import java.util.Scanner; Scanner java.util public class Main{

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s = new String(in.nextLine());
		boolean f1=huiwen(s);
		boolean f2=huiwen(s.substring(0, (s.length()-1)/2));
		boolean f3=huiwen(s.substring((s.length()+3)/2-1, s.length()));
		if(f1&&f2&&f3) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	}
	public static boolean huiwen(String ss) {
		StringBuffer a = new StringBuffer(ss);
		String s1 = a.toString();
		String s2 = a.reverse().toString();
		return s1.equals(s2);
	}
} Main public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s = new String(in.nextLine());
		boolean f1=huiwen(s);
		boolean f2=huiwen(s.substring(0, (s.length()-1)/2));
		boolean f3=huiwen(s.substring((s.length()+3)/2-1, s.length()));
		if(f1&&f2&&f3) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	} main {
		Scanner in = new Scanner(System.in);
		String s = new String(in.nextLine());
		boolean f1=huiwen(s);
		boolean f2=huiwen(s.substring(0, (s.length()-1)/2));
		boolean f3=huiwen(s.substring((s.length()+3)/2-1, s.length()));
		if(f1&&f2&&f3) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	} Scanner in = new Scanner(System.in); in new Scanner(System.in) String s = new String(in.nextLine()); s new String(in.nextLine()) boolean f1=huiwen(s); f1 huiwen(s) huiwen s boolean f2=huiwen(s.substring(0, (s.length()-1)/2)); f2 huiwen(s.substring(0, (s.length()-1)/2)) huiwen 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 boolean f3=huiwen(s.substring((s.length()+3)/2-1, s.length())); f3 huiwen(s.substring((s.length()+3)/2-1, s.length())) huiwen 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(f1&&f2&&f3) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		} f1&&f2&&f3 f1&&f2&&f3 f1 f2 f3 {
			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 huiwen(String ss) {
		StringBuffer a = new StringBuffer(ss);
		String s1 = a.toString();
		String s2 = a.reverse().toString();
		return s1.equals(s2);
	} huiwen {
		StringBuffer a = new StringBuffer(ss);
		String s1 = a.toString();
		String s2 = a.reverse().toString();
		return s1.equals(s2);
	} StringBuffer a = new StringBuffer(ss); a new StringBuffer(ss) String s1 = a.toString(); s1 a.toString() a.toString a String s2 = a.reverse().toString(); s2 a.reverse().toString() a.reverse().toString a.reverse() a.reverse a return s1.equals(s2); s1.equals(s2) s1.equals s1 s2 String ss ss public class Main{

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

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s = new String(in.nextLine());
		boolean f1=huiwen(s);
		boolean f2=huiwen(s.substring(0, (s.length()-1)/2));
		boolean f3=huiwen(s.substring((s.length()+3)/2-1, s.length()));
		if(f1&&f2&&f3) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	}
	public static boolean huiwen(String ss) {
		StringBuffer a = new StringBuffer(ss);
		String s1 = a.toString();
		String s2 = a.reverse().toString();
		return s1.equals(s2);
	}
} Main
import java.util.Scanner;
public class Main{

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String s = new String(in.nextLine());
		boolean f1=huiwen(s);
		boolean f2=huiwen(s.substring(0, (s.length()-1)/2));
		boolean f3=huiwen(s.substring((s.length()+3)/2-1, s.length()));
		if(f1&&f2&&f3) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	}
	public static boolean huiwen(String ss) {
		StringBuffer a = new StringBuffer(ss);
		String s1 = a.toString();
		String s2 = a.reverse().toString();
		return s1.equals(s2);
	}
}