import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		// 読み込み
		Boolean flag1 = false;
		Boolean flag2 = false;
		Boolean flag3 = false;
		
		Scanner sc = new Scanner(System.in);
		String S = sc.next();
		int N = S.length();

		// 条件1
		StringBuffer sb = new StringBuffer(S);
		sb.reverse();
		if(S.toString().equals(sb.toString())) {
			flag1 = true;
		}
		
		// 条件2
		String parse = S.substring(0, (N -1)/2);
		sb = new StringBuffer(parse);
		sb.reverse();
		if(parse.toString().equals(sb.toString())) {
			flag2 = true;
		}
		//System.out.println(parse + " " + sb);
	
		// 条件3
		parse = S.substring((N+3)/2-1, N);
		sb = new StringBuffer(parse);
		sb.reverse();
		if(parse.toString().equals(sb.toString())) {
			flag3 = true;
		}
		//System.out.println(parse + " " + sb);
		
		if(flag1 == true && flag2 == true && flag3 == true) {
			System.out.println("Yes");
		}
		else {
			System.out.println("No");
		}
	}
}

/tmp/hf-datasets-cache/medium/datasets/42704881117311-config-parquet-and-info-qiankunmu-Project_CodeNet-896c9d36/hub/datasets--qiankunmu--Project_CodeNet_Python800_and_Java250/snapshots/c899fde44a77ba1cc14973ed3de064e4ff3aadc7/Project_CodeNet_Java250.tar.gz