import java.util.*;
import java.lang.*;
import java.io.*;

public class Main {
    public static void main(String[] args) throws java.lang.Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader((System.in)));
        StringTokenizer st = new StringTokenizer(br.readLine());
        char[] s = st.nextToken().toCharArray();
        for (int i = 0, j = s.length-1; i <= j; i++, j--) {
            if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            }
        }
        for (int i = 0, j = (s.length - 2) / 2; i <= j; i++, j--) {
            if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            }
        }
        for (int i = (s.length + 1) / 2, j = s.length - 1; i <= j; i++, j--) {
            if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            }
        }
        System.out.println("Yes");
//        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//        bw.write("\n");
//        bw.close();
    }

}
/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