import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        B solver = new B();
        solver.solve(1, in, out);
        out.close();
    }

    static class B {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            // 入力
            String S = in.next();
            int n = S.length();
            int n1 = (int) Math.ceil((n - 1) / 2);
            int n2 = (int) Math.ceil((n + 3) / 2);

            String s1 = S.substring(0, n1);
            String s2 = S.substring(n2 - 1);

            boolean test1 = palindrome(S);
            boolean test2 = palindrome(s1);
            boolean test3 = palindrome(s2);

            if (test1 == true && test2 == true && test3 == true) {
                out.println("Yes");
                return;
            }
            out.println("No");

        }

        boolean palindrome(String arg) {
            char str[] = arg.toCharArray();
            for (int i = 0; i < str.length / 2; i++) {
                if (str[i] != str[str.length - i - 1]) return false;
            }
            return true;
        }

    }
}
 import java.io.OutputStream; OutputStream java.io import java.io.IOException; IOException java.io import java.io.InputStream; InputStream java.io import java.io.PrintWriter; PrintWriter java.io import java.util.Scanner; Scanner java.util public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        B solver = new B();
        solver.solve(1, in, out);
        out.close();
    }

    static class B {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            // 入力
            String S = in.next();
            int n = S.length();
            int n1 = (int) Math.ceil((n - 1) / 2);
            int n2 = (int) Math.ceil((n + 3) / 2);

            String s1 = S.substring(0, n1);
            String s2 = S.substring(n2 - 1);

            boolean test1 = palindrome(S);
            boolean test2 = palindrome(s1);
            boolean test3 = palindrome(s2);

            if (test1 == true && test2 == true && test3 == true) {
                out.println("Yes");
                return;
            }
            out.println("No");

        }

        boolean palindrome(String arg) {
            char str[] = arg.toCharArray();
            for (int i = 0; i < str.length / 2; i++) {
                if (str[i] != str[str.length - i - 1]) return false;
            }
            return true;
        }

    }
} Main public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        B solver = new B();
        solver.solve(1, in, out);
        out.close();
    } main {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        B solver = new B();
        solver.solve(1, in, out);
        out.close();
    } InputStream inputStream = System.in; inputStream System.in System System.in OutputStream outputStream = System.out; outputStream System.out System System.out Scanner in = new Scanner(inputStream); in new Scanner(inputStream) PrintWriter out = new PrintWriter(outputStream); out new PrintWriter(outputStream) B solver = new B(); solver new B() solver.solve(1, in, out) solver.solve solver 1 in out out.close() out.close out String[] args args static class B {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            // 入力
            String S = in.next();
            int n = S.length();
            int n1 = (int) Math.ceil((n - 1) / 2);
            int n2 = (int) Math.ceil((n + 3) / 2);

            String s1 = S.substring(0, n1);
            String s2 = S.substring(n2 - 1);

            boolean test1 = palindrome(S);
            boolean test2 = palindrome(s1);
            boolean test3 = palindrome(s2);

            if (test1 == true && test2 == true && test3 == true) {
                out.println("Yes");
                return;
            }
            out.println("No");

        }

        boolean palindrome(String arg) {
            char str[] = arg.toCharArray();
            for (int i = 0; i < str.length / 2; i++) {
                if (str[i] != str[str.length - i - 1]) return false;
            }
            return true;
        }

    } B public void solve(int testNumber, Scanner in, PrintWriter out) {
            // 入力
            String S = in.next();
            int n = S.length();
            int n1 = (int) Math.ceil((n - 1) / 2);
            int n2 = (int) Math.ceil((n + 3) / 2);

            String s1 = S.substring(0, n1);
            String s2 = S.substring(n2 - 1);

            boolean test1 = palindrome(S);
            boolean test2 = palindrome(s1);
            boolean test3 = palindrome(s2);

            if (test1 == true && test2 == true && test3 == true) {
                out.println("Yes");
                return;
            }
            out.println("No");

        } solve {
            // 入力
            String S = in.next();
            int n = S.length();
            int n1 = (int) Math.ceil((n - 1) / 2);
            int n2 = (int) Math.ceil((n + 3) / 2);

            String s1 = S.substring(0, n1);
            String s2 = S.substring(n2 - 1);

            boolean test1 = palindrome(S);
            boolean test2 = palindrome(s1);
            boolean test3 = palindrome(s2);

            if (test1 == true && test2 == true && test3 == true) {
                out.println("Yes");
                return;
            }
            out.println("No");

        } String S = in.next(); S in.next() in.next in int n = S.length(); n S.length() S.length S int n1 = (int) Math.ceil((n - 1) / 2); n1 (int) Math.ceil((n - 1) / 2) Math.ceil Math (n - 1) / 2 (n - 1) n 1 2 int n2 = (int) Math.ceil((n + 3) / 2); n2 (int) Math.ceil((n + 3) / 2) Math.ceil Math (n + 3) / 2 (n + 3) n 3 2 String s1 = S.substring(0, n1); s1 S.substring(0, n1) S.substring S 0 n1 String s2 = S.substring(n2 - 1); s2 S.substring(n2 - 1) S.substring S n2 - 1 n2 1 boolean test1 = palindrome(S); test1 palindrome(S) palindrome S boolean test2 = palindrome(s1); test2 palindrome(s1) palindrome s1 boolean test3 = palindrome(s2); test3 palindrome(s2) palindrome s2 if (test1 == true && test2 == true && test3 == true) {
                out.println("Yes");
                return;
            } test1 == true && test2 == true && test3 == true test1 == true && test2 == true && test3 == true test1 == true test1 true test2 == true test2 true test3 == true test3 true {
                out.println("Yes");
                return;
            } out.println("Yes") out.println out "Yes" return; out.println("No") out.println out "No" int testNumber testNumber Scanner in in PrintWriter out out boolean palindrome(String arg) {
            char str[] = arg.toCharArray();
            for (int i = 0; i < str.length / 2; i++) {
                if (str[i] != str[str.length - i - 1]) return false;
            }
            return true;
        } palindrome {
            char str[] = arg.toCharArray();
            for (int i = 0; i < str.length / 2; i++) {
                if (str[i] != str[str.length - i - 1]) return false;
            }
            return true;
        } char str[] = arg.toCharArray(); str arg.toCharArray() arg.toCharArray arg for (int i = 0; i < str.length / 2; i++) {
                if (str[i] != str[str.length - i - 1]) return false;
            } int i = 0; int i = 0; i 0 i < str.length / 2 i str.length / 2 str.length str str.length 2 i++ i++ i {
                if (str[i] != str[str.length - i - 1]) return false;
            } {
                if (str[i] != str[str.length - i - 1]) return false;
            } if (str[i] != str[str.length - i - 1]) return false; str[i] != str[str.length - i - 1] str[i] str i str[str.length - i - 1] str str.length - i - 1 str.length - i - 1 str.length str str.length i 1 return false; false return true; true String arg arg public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        B solver = new B();
        solver.solve(1, in, out);
        out.close();
    }

    static class B {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            // 入力
            String S = in.next();
            int n = S.length();
            int n1 = (int) Math.ceil((n - 1) / 2);
            int n2 = (int) Math.ceil((n + 3) / 2);

            String s1 = S.substring(0, n1);
            String s2 = S.substring(n2 - 1);

            boolean test1 = palindrome(S);
            boolean test2 = palindrome(s1);
            boolean test3 = palindrome(s2);

            if (test1 == true && test2 == true && test3 == true) {
                out.println("Yes");
                return;
            }
            out.println("No");

        }

        boolean palindrome(String arg) {
            char str[] = arg.toCharArray();
            for (int i = 0; i < str.length / 2; i++) {
                if (str[i] != str[str.length - i - 1]) return false;
            }
            return true;
        }

    }
} public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        B solver = new B();
        solver.solve(1, in, out);
        out.close();
    }

    static class B {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            // 入力
            String S = in.next();
            int n = S.length();
            int n1 = (int) Math.ceil((n - 1) / 2);
            int n2 = (int) Math.ceil((n + 3) / 2);

            String s1 = S.substring(0, n1);
            String s2 = S.substring(n2 - 1);

            boolean test1 = palindrome(S);
            boolean test2 = palindrome(s1);
            boolean test3 = palindrome(s2);

            if (test1 == true && test2 == true && test3 == true) {
                out.println("Yes");
                return;
            }
            out.println("No");

        }

        boolean palindrome(String arg) {
            char str[] = arg.toCharArray();
            for (int i = 0; i < str.length / 2; i++) {
                if (str[i] != str[str.length - i - 1]) return false;
            }
            return true;
        }

    }
} Main
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.Scanner;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        Scanner in = new Scanner(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        B solver = new B();
        solver.solve(1, in, out);
        out.close();
    }

    static class B {
        public void solve(int testNumber, Scanner in, PrintWriter out) {
            // 入力
            String S = in.next();
            int n = S.length();
            int n1 = (int) Math.ceil((n - 1) / 2);
            int n2 = (int) Math.ceil((n + 3) / 2);

            String s1 = S.substring(0, n1);
            String s2 = S.substring(n2 - 1);

            boolean test1 = palindrome(S);
            boolean test2 = palindrome(s1);
            boolean test3 = palindrome(s2);

            if (test1 == true && test2 == true && test3 == true) {
                out.println("Yes");
                return;
            }
            out.println("No");

        }

        boolean palindrome(String arg) {
            char str[] = arg.toCharArray();
            for (int i = 0; i < str.length / 2; i++) {
                if (str[i] != str[str.length - i - 1]) return false;
            }
            return true;
        }

    }
}

