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();
    }

} import java.util.*; util.* java import java.lang.*; lang.* java import java.io.*; io.* java 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();
    }

} 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();
    } main {
        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();
    } BufferedReader br = new BufferedReader(new InputStreamReader((System.in))); br new BufferedReader(new InputStreamReader((System.in))) StringTokenizer st = new StringTokenizer(br.readLine()); st new StringTokenizer(br.readLine()) char[] s = st.nextToken().toCharArray(); s st.nextToken().toCharArray() st.nextToken().toCharArray st.nextToken() st.nextToken st for (int i = 0, j = s.length-1; i <= j; i++, j--) {
            if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            }
        } int i = 0, j = s.length-1; int i = 0 i 0 j = s.length-1; j s.length-1 s.length s s.length 1 i <= j i j i++, j-- i++ i j-- j {
            if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            }
        } {
            if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            }
        } if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            } s[i] == s[j] s[i] s i s[j] s j continue; {
                System.out.println("No");
                return;
            } System.out.println("No") System.out.println System.out System System.out "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;
            }
        } int i = 0, j = (s.length - 2) / 2; int i = 0 i 0 j = (s.length - 2) / 2; j (s.length - 2) / 2 (s.length - 2) s.length s s.length 2 2 i <= j i j i++, j-- i++ i j-- j {
            if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            }
        } {
            if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            }
        } if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            } s[i] == s[j] s[i] s i s[j] s j continue; {
                System.out.println("No");
                return;
            } System.out.println("No") System.out.println System.out System System.out "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;
            }
        } int i = (s.length + 1) / 2, j = s.length - 1; int i = (s.length + 1) / 2 i (s.length + 1) / 2 (s.length + 1) s.length s s.length 1 2 j = s.length - 1; j s.length - 1 s.length s s.length 1 i <= j i j i++, j-- i++ i j-- j {
            if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            }
        } {
            if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            }
        } if (s[i] == s[j]) continue;
            else {
                System.out.println("No");
                return;
            } s[i] == s[j] s[i] s i s[j] s j continue; {
                System.out.println("No");
                return;
            } System.out.println("No") System.out.println System.out System System.out "No" return; System.out.println("Yes") System.out.println System.out System System.out "Yes" String[] args args 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();
    }

} 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();
    }

} Main
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();
    }

}