import java.util.Scanner;


public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		int n = str.length();
		boolean flag = true;
		for(int i = 0; i < n/2; i++) {
			if(str.charAt(i)!=str.charAt(n-1-i)) {
				flag = false;
			}
		}

		String fstr = str.substring(0,(n-1)/2);
		for(int i = 0; i < fstr.length()/2; i++) {
			if(fstr.charAt(i)!=fstr.charAt(fstr.length()-1-i)) {
				flag = false;
			}
		}

		String lstr = str.substring((n+3)/2-1,n);
		for(int i = 0; i <lstr.length()/2; i++) {
			if(lstr.charAt(i)!=lstr.charAt(lstr.length()-1-i)) {
				flag = false;
			}
		}
		if(flag) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	}
} 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.next();
		int n = str.length();
		boolean flag = true;
		for(int i = 0; i < n/2; i++) {
			if(str.charAt(i)!=str.charAt(n-1-i)) {
				flag = false;
			}
		}

		String fstr = str.substring(0,(n-1)/2);
		for(int i = 0; i < fstr.length()/2; i++) {
			if(fstr.charAt(i)!=fstr.charAt(fstr.length()-1-i)) {
				flag = false;
			}
		}

		String lstr = str.substring((n+3)/2-1,n);
		for(int i = 0; i <lstr.length()/2; i++) {
			if(lstr.charAt(i)!=lstr.charAt(lstr.length()-1-i)) {
				flag = false;
			}
		}
		if(flag) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	}
} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		int n = str.length();
		boolean flag = true;
		for(int i = 0; i < n/2; i++) {
			if(str.charAt(i)!=str.charAt(n-1-i)) {
				flag = false;
			}
		}

		String fstr = str.substring(0,(n-1)/2);
		for(int i = 0; i < fstr.length()/2; i++) {
			if(fstr.charAt(i)!=fstr.charAt(fstr.length()-1-i)) {
				flag = false;
			}
		}

		String lstr = str.substring((n+3)/2-1,n);
		for(int i = 0; i <lstr.length()/2; i++) {
			if(lstr.charAt(i)!=lstr.charAt(lstr.length()-1-i)) {
				flag = false;
			}
		}
		if(flag) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	} main {
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		int n = str.length();
		boolean flag = true;
		for(int i = 0; i < n/2; i++) {
			if(str.charAt(i)!=str.charAt(n-1-i)) {
				flag = false;
			}
		}

		String fstr = str.substring(0,(n-1)/2);
		for(int i = 0; i < fstr.length()/2; i++) {
			if(fstr.charAt(i)!=fstr.charAt(fstr.length()-1-i)) {
				flag = false;
			}
		}

		String lstr = str.substring((n+3)/2-1,n);
		for(int i = 0; i <lstr.length()/2; i++) {
			if(lstr.charAt(i)!=lstr.charAt(lstr.length()-1-i)) {
				flag = false;
			}
		}
		if(flag) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String str = sc.next(); str sc.next() sc.next sc int n = str.length(); n str.length() str.length str boolean flag = true; flag true for(int i = 0; i < n/2; i++) {
			if(str.charAt(i)!=str.charAt(n-1-i)) {
				flag = false;
			}
		} int i = 0; int i = 0; i 0 i < n/2 i n/2 n 2 i++ i++ i {
			if(str.charAt(i)!=str.charAt(n-1-i)) {
				flag = false;
			}
		} {
			if(str.charAt(i)!=str.charAt(n-1-i)) {
				flag = false;
			}
		} if(str.charAt(i)!=str.charAt(n-1-i)) {
				flag = false;
			} str.charAt(i)!=str.charAt(n-1-i) str.charAt(i) str.charAt str i str.charAt(n-1-i) str.charAt str n-1-i n-1-i n 1 i {
				flag = false;
			} flag = false flag false String fstr = str.substring(0,(n-1)/2); fstr str.substring(0,(n-1)/2) str.substring str 0 (n-1)/2 (n-1) n 1 2 for(int i = 0; i < fstr.length()/2; i++) {
			if(fstr.charAt(i)!=fstr.charAt(fstr.length()-1-i)) {
				flag = false;
			}
		} int i = 0; int i = 0; i 0 i < fstr.length()/2 i fstr.length()/2 fstr.length() fstr.length fstr 2 i++ i++ i {
			if(fstr.charAt(i)!=fstr.charAt(fstr.length()-1-i)) {
				flag = false;
			}
		} {
			if(fstr.charAt(i)!=fstr.charAt(fstr.length()-1-i)) {
				flag = false;
			}
		} if(fstr.charAt(i)!=fstr.charAt(fstr.length()-1-i)) {
				flag = false;
			} fstr.charAt(i)!=fstr.charAt(fstr.length()-1-i) fstr.charAt(i) fstr.charAt fstr i fstr.charAt(fstr.length()-1-i) fstr.charAt fstr fstr.length()-1-i fstr.length()-1-i fstr.length() fstr.length fstr 1 i {
				flag = false;
			} flag = false flag false String lstr = str.substring((n+3)/2-1,n); lstr str.substring((n+3)/2-1,n) str.substring str (n+3)/2-1 (n+3)/2 (n+3) n 3 2 1 n for(int i = 0; i <lstr.length()/2; i++) {
			if(lstr.charAt(i)!=lstr.charAt(lstr.length()-1-i)) {
				flag = false;
			}
		} int i = 0; int i = 0; i 0 i <lstr.length()/2 i lstr.length()/2 lstr.length() lstr.length lstr 2 i++ i++ i {
			if(lstr.charAt(i)!=lstr.charAt(lstr.length()-1-i)) {
				flag = false;
			}
		} {
			if(lstr.charAt(i)!=lstr.charAt(lstr.length()-1-i)) {
				flag = false;
			}
		} if(lstr.charAt(i)!=lstr.charAt(lstr.length()-1-i)) {
				flag = false;
			} lstr.charAt(i)!=lstr.charAt(lstr.length()-1-i) lstr.charAt(i) lstr.charAt lstr i lstr.charAt(lstr.length()-1-i) lstr.charAt lstr lstr.length()-1-i lstr.length()-1-i lstr.length() lstr.length lstr 1 i {
				flag = false;
			} flag = false flag false if(flag) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		} flag {
			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 str = sc.next();
		int n = str.length();
		boolean flag = true;
		for(int i = 0; i < n/2; i++) {
			if(str.charAt(i)!=str.charAt(n-1-i)) {
				flag = false;
			}
		}

		String fstr = str.substring(0,(n-1)/2);
		for(int i = 0; i < fstr.length()/2; i++) {
			if(fstr.charAt(i)!=fstr.charAt(fstr.length()-1-i)) {
				flag = false;
			}
		}

		String lstr = str.substring((n+3)/2-1,n);
		for(int i = 0; i <lstr.length()/2; i++) {
			if(lstr.charAt(i)!=lstr.charAt(lstr.length()-1-i)) {
				flag = false;
			}
		}
		if(flag) {
			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 str = sc.next();
		int n = str.length();
		boolean flag = true;
		for(int i = 0; i < n/2; i++) {
			if(str.charAt(i)!=str.charAt(n-1-i)) {
				flag = false;
			}
		}

		String fstr = str.substring(0,(n-1)/2);
		for(int i = 0; i < fstr.length()/2; i++) {
			if(fstr.charAt(i)!=fstr.charAt(fstr.length()-1-i)) {
				flag = false;
			}
		}

		String lstr = str.substring((n+3)/2-1,n);
		for(int i = 0; i <lstr.length()/2; i++) {
			if(lstr.charAt(i)!=lstr.charAt(lstr.length()-1-i)) {
				flag = false;
			}
		}
		if(flag) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	}
} Main
import java.util.Scanner;


public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		int n = str.length();
		boolean flag = true;
		for(int i = 0; i < n/2; i++) {
			if(str.charAt(i)!=str.charAt(n-1-i)) {
				flag = false;
			}
		}

		String fstr = str.substring(0,(n-1)/2);
		for(int i = 0; i < fstr.length()/2; i++) {
			if(fstr.charAt(i)!=fstr.charAt(fstr.length()-1-i)) {
				flag = false;
			}
		}

		String lstr = str.substring((n+3)/2-1,n);
		for(int i = 0; i <lstr.length()/2; i++) {
			if(lstr.charAt(i)!=lstr.charAt(lstr.length()-1-i)) {
				flag = false;
			}
		}
		if(flag) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	}
}
