import java.io.IOException;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        int n = s.length();

        if (!isPalindrome(s)) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring(0, (n - 1) / 2))) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring((n + 3) / 2 - 1, n))) {
            System.out.println("No");
            return;
        }

        System.out.println("Yes");
    }

    public static boolean isPalindrome(String s) {
        int l = 0, r = s.length() - 1;
        while (l < r) {
            if (s.charAt(l) != s.charAt(r)) {
                return false;
            }
            l++; r--;
        }
        return true;
    }
} import java.io.IOException; IOException java.io import java.util.*; util.* java public class Main {

    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        int n = s.length();

        if (!isPalindrome(s)) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring(0, (n - 1) / 2))) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring((n + 3) / 2 - 1, n))) {
            System.out.println("No");
            return;
        }

        System.out.println("Yes");
    }

    public static boolean isPalindrome(String s) {
        int l = 0, r = s.length() - 1;
        while (l < r) {
            if (s.charAt(l) != s.charAt(r)) {
                return false;
            }
            l++; r--;
        }
        return true;
    }
} Main public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        int n = s.length();

        if (!isPalindrome(s)) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring(0, (n - 1) / 2))) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring((n + 3) / 2 - 1, n))) {
            System.out.println("No");
            return;
        }

        System.out.println("Yes");
    } main {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        int n = s.length();

        if (!isPalindrome(s)) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring(0, (n - 1) / 2))) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring((n + 3) / 2 - 1, n))) {
            System.out.println("No");
            return;
        }

        System.out.println("Yes");
    } Scanner in = new Scanner(System.in); in new Scanner(System.in) String s = in.next(); s in.next() in.next in int n = s.length(); n s.length() s.length s if (!isPalindrome(s)) {
            System.out.println("No");
            return;
        } !isPalindrome(s) isPalindrome(s) isPalindrome s {
            System.out.println("No");
            return;
        } System.out.println("No") System.out.println System.out System System.out "No" return; if (!isPalindrome(s.substring(0, (n - 1) / 2))) {
            System.out.println("No");
            return;
        } !isPalindrome(s.substring(0, (n - 1) / 2)) isPalindrome(s.substring(0, (n - 1) / 2)) isPalindrome s.substring(0, (n - 1) / 2) s.substring s 0 (n - 1) / 2 (n - 1) n 1 2 {
            System.out.println("No");
            return;
        } System.out.println("No") System.out.println System.out System System.out "No" return; if (!isPalindrome(s.substring((n + 3) / 2 - 1, n))) {
            System.out.println("No");
            return;
        } !isPalindrome(s.substring((n + 3) / 2 - 1, n)) isPalindrome(s.substring((n + 3) / 2 - 1, n)) isPalindrome s.substring((n + 3) / 2 - 1, n) s.substring s (n + 3) / 2 - 1 (n + 3) / 2 (n + 3) n 3 2 1 n {
            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 static boolean isPalindrome(String s) {
        int l = 0, r = s.length() - 1;
        while (l < r) {
            if (s.charAt(l) != s.charAt(r)) {
                return false;
            }
            l++; r--;
        }
        return true;
    } isPalindrome {
        int l = 0, r = s.length() - 1;
        while (l < r) {
            if (s.charAt(l) != s.charAt(r)) {
                return false;
            }
            l++; r--;
        }
        return true;
    } int l = 0 l 0 r = s.length() - 1; r s.length() - 1 s.length() s.length s 1 while (l < r) {
            if (s.charAt(l) != s.charAt(r)) {
                return false;
            }
            l++; r--;
        } l < r l r {
            if (s.charAt(l) != s.charAt(r)) {
                return false;
            }
            l++; r--;
        } if (s.charAt(l) != s.charAt(r)) {
                return false;
            } s.charAt(l) != s.charAt(r) s.charAt(l) s.charAt s l s.charAt(r) s.charAt s r {
                return false;
            } return false; false l++ l r-- r return true; true String s s public class Main {

    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        int n = s.length();

        if (!isPalindrome(s)) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring(0, (n - 1) / 2))) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring((n + 3) / 2 - 1, n))) {
            System.out.println("No");
            return;
        }

        System.out.println("Yes");
    }

    public static boolean isPalindrome(String s) {
        int l = 0, r = s.length() - 1;
        while (l < r) {
            if (s.charAt(l) != s.charAt(r)) {
                return false;
            }
            l++; r--;
        }
        return true;
    }
} public class Main {

    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        int n = s.length();

        if (!isPalindrome(s)) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring(0, (n - 1) / 2))) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring((n + 3) / 2 - 1, n))) {
            System.out.println("No");
            return;
        }

        System.out.println("Yes");
    }

    public static boolean isPalindrome(String s) {
        int l = 0, r = s.length() - 1;
        while (l < r) {
            if (s.charAt(l) != s.charAt(r)) {
                return false;
            }
            l++; r--;
        }
        return true;
    }
} Main
import java.io.IOException;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        int n = s.length();

        if (!isPalindrome(s)) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring(0, (n - 1) / 2))) {
            System.out.println("No");
            return;
        }
        if (!isPalindrome(s.substring((n + 3) / 2 - 1, n))) {
            System.out.println("No");
            return;
        }

        System.out.println("Yes");
    }

    public static boolean isPalindrome(String s) {
        int l = 0, r = s.length() - 1;
        while (l < r) {
            if (s.charAt(l) != s.charAt(r)) {
                return false;
            }
            l++; r--;
        }
        return true;
    }
}