import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		if (IsTolk(input.split("")) && IsTolk(input.substring(0, ((input.length() - 1) / 2)).split(""))
				&& IsTolk(input.substring(((input.length() + 3) / 2) - 1).split(""))) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}

	private static boolean IsTolk(String[] split) {
		boolean res = true;
		for (int i = 0; i < split.length / 2; i++) {
			if (!(split[i].equals(split[split.length - i - 1]))) {
				res = false;
				break;
			}
		}
		return res;
	}
} import java.util.Scanner; Scanner java.util public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		if (IsTolk(input.split("")) && IsTolk(input.substring(0, ((input.length() - 1) / 2)).split(""))
				&& IsTolk(input.substring(((input.length() + 3) / 2) - 1).split(""))) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}

	private static boolean IsTolk(String[] split) {
		boolean res = true;
		for (int i = 0; i < split.length / 2; i++) {
			if (!(split[i].equals(split[split.length - i - 1]))) {
				res = false;
				break;
			}
		}
		return res;
	}
} Main public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		if (IsTolk(input.split("")) && IsTolk(input.substring(0, ((input.length() - 1) / 2)).split(""))
				&& IsTolk(input.substring(((input.length() + 3) / 2) - 1).split(""))) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	} main {
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		if (IsTolk(input.split("")) && IsTolk(input.substring(0, ((input.length() - 1) / 2)).split(""))
				&& IsTolk(input.substring(((input.length() + 3) / 2) - 1).split(""))) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String input = sc.next(); input sc.next() sc.next sc if (IsTolk(input.split("")) && IsTolk(input.substring(0, ((input.length() - 1) / 2)).split(""))
				&& IsTolk(input.substring(((input.length() + 3) / 2) - 1).split(""))) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		} IsTolk(input.split("")) && IsTolk(input.substring(0, ((input.length() - 1) / 2)).split(""))
				&& IsTolk(input.substring(((input.length() + 3) / 2) - 1).split("")) IsTolk(input.split("")) && IsTolk(input.substring(0, ((input.length() - 1) / 2)).split(""))
				&& IsTolk(input.substring(((input.length() + 3) / 2) - 1).split("")) IsTolk(input.split("")) IsTolk input.split("") input.split input "" IsTolk(input.substring(0, ((input.length() - 1) / 2)).split("")) IsTolk input.substring(0, ((input.length() - 1) / 2)).split("") input.substring(0, ((input.length() - 1) / 2)).split input.substring(0, ((input.length() - 1) / 2)) input.substring input 0 ((input.length() - 1) / 2) (input.length() - 1) input.length() input.length input 1 2 "" IsTolk(input.substring(((input.length() + 3) / 2) - 1).split("")) IsTolk input.substring(((input.length() + 3) / 2) - 1).split("") input.substring(((input.length() + 3) / 2) - 1).split input.substring(((input.length() + 3) / 2) - 1) input.substring input ((input.length() + 3) / 2) - 1 ((input.length() + 3) / 2) (input.length() + 3) input.length() input.length input 3 2 1 "" {
			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 private static boolean IsTolk(String[] split) {
		boolean res = true;
		for (int i = 0; i < split.length / 2; i++) {
			if (!(split[i].equals(split[split.length - i - 1]))) {
				res = false;
				break;
			}
		}
		return res;
	} IsTolk {
		boolean res = true;
		for (int i = 0; i < split.length / 2; i++) {
			if (!(split[i].equals(split[split.length - i - 1]))) {
				res = false;
				break;
			}
		}
		return res;
	} boolean res = true; res true for (int i = 0; i < split.length / 2; i++) {
			if (!(split[i].equals(split[split.length - i - 1]))) {
				res = false;
				break;
			}
		} int i = 0; int i = 0; i 0 i < split.length / 2 i split.length / 2 split.length split split.length 2 i++ i++ i {
			if (!(split[i].equals(split[split.length - i - 1]))) {
				res = false;
				break;
			}
		} {
			if (!(split[i].equals(split[split.length - i - 1]))) {
				res = false;
				break;
			}
		} if (!(split[i].equals(split[split.length - i - 1]))) {
				res = false;
				break;
			} !(split[i].equals(split[split.length - i - 1])) (split[i].equals(split[split.length - i - 1])) split[i].equals split[i] split i split[split.length - i - 1] split split.length - i - 1 split.length - i - 1 split.length split split.length i 1 {
				res = false;
				break;
			} res = false res false break; return res; res String[] split split public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		if (IsTolk(input.split("")) && IsTolk(input.substring(0, ((input.length() - 1) / 2)).split(""))
				&& IsTolk(input.substring(((input.length() + 3) / 2) - 1).split(""))) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}

	private static boolean IsTolk(String[] split) {
		boolean res = true;
		for (int i = 0; i < split.length / 2; i++) {
			if (!(split[i].equals(split[split.length - i - 1]))) {
				res = false;
				break;
			}
		}
		return res;
	}
} public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		if (IsTolk(input.split("")) && IsTolk(input.substring(0, ((input.length() - 1) / 2)).split(""))
				&& IsTolk(input.substring(((input.length() + 3) / 2) - 1).split(""))) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}

	private static boolean IsTolk(String[] split) {
		boolean res = true;
		for (int i = 0; i < split.length / 2; i++) {
			if (!(split[i].equals(split[split.length - i - 1]))) {
				res = false;
				break;
			}
		}
		return res;
	}
} Main
import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		if (IsTolk(input.split("")) && IsTolk(input.substring(0, ((input.length() - 1) / 2)).split(""))
				&& IsTolk(input.substring(((input.length() + 3) / 2) - 1).split(""))) {
			System.out.println("Yes");
		} else {
			System.out.println("No");
		}
	}

	private static boolean IsTolk(String[] split) {
		boolean res = true;
		for (int i = 0; i < split.length / 2; i++) {
			if (!(split[i].equals(split[split.length - i - 1]))) {
				res = false;
				break;
			}
		}
		return res;
	}
}