import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String inString = scanner.next();
        scanner.close();

        char[] subSt1 = inString.substring(0, (inString.length() - 1) / 2).toCharArray();
        char[] subSt2 = inString.substring((inString.length() + 3) / 2 - 1, inString.length()).toCharArray();
        char[] inst = inString.toCharArray();
        boolean ans = true;
        inString = null;

        for (int i = 0; i < inst.length; i++) {
            if (inst[i] != inst[inst.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt1.length; i++) {
            if (subSt1[i] != subSt1[subSt1.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt2.length; i++) {
            if (subSt2[i] != subSt2[subSt2.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        System.out.println(ans ? "Yes" : "No");

    }
} import java.util.Scanner; Scanner java.util public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String inString = scanner.next();
        scanner.close();

        char[] subSt1 = inString.substring(0, (inString.length() - 1) / 2).toCharArray();
        char[] subSt2 = inString.substring((inString.length() + 3) / 2 - 1, inString.length()).toCharArray();
        char[] inst = inString.toCharArray();
        boolean ans = true;
        inString = null;

        for (int i = 0; i < inst.length; i++) {
            if (inst[i] != inst[inst.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt1.length; i++) {
            if (subSt1[i] != subSt1[subSt1.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt2.length; i++) {
            if (subSt2[i] != subSt2[subSt2.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        System.out.println(ans ? "Yes" : "No");

    }
} Main public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String inString = scanner.next();
        scanner.close();

        char[] subSt1 = inString.substring(0, (inString.length() - 1) / 2).toCharArray();
        char[] subSt2 = inString.substring((inString.length() + 3) / 2 - 1, inString.length()).toCharArray();
        char[] inst = inString.toCharArray();
        boolean ans = true;
        inString = null;

        for (int i = 0; i < inst.length; i++) {
            if (inst[i] != inst[inst.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt1.length; i++) {
            if (subSt1[i] != subSt1[subSt1.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt2.length; i++) {
            if (subSt2[i] != subSt2[subSt2.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        System.out.println(ans ? "Yes" : "No");

    } main {
        Scanner scanner = new Scanner(System.in);
        String inString = scanner.next();
        scanner.close();

        char[] subSt1 = inString.substring(0, (inString.length() - 1) / 2).toCharArray();
        char[] subSt2 = inString.substring((inString.length() + 3) / 2 - 1, inString.length()).toCharArray();
        char[] inst = inString.toCharArray();
        boolean ans = true;
        inString = null;

        for (int i = 0; i < inst.length; i++) {
            if (inst[i] != inst[inst.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt1.length; i++) {
            if (subSt1[i] != subSt1[subSt1.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt2.length; i++) {
            if (subSt2[i] != subSt2[subSt2.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        System.out.println(ans ? "Yes" : "No");

    } Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) String inString = scanner.next(); inString scanner.next() scanner.next scanner scanner.close() scanner.close scanner char[] subSt1 = inString.substring(0, (inString.length() - 1) / 2).toCharArray(); subSt1 inString.substring(0, (inString.length() - 1) / 2).toCharArray() inString.substring(0, (inString.length() - 1) / 2).toCharArray inString.substring(0, (inString.length() - 1) / 2) inString.substring inString 0 (inString.length() - 1) / 2 (inString.length() - 1) inString.length() inString.length inString 1 2 char[] subSt2 = inString.substring((inString.length() + 3) / 2 - 1, inString.length()).toCharArray(); subSt2 inString.substring((inString.length() + 3) / 2 - 1, inString.length()).toCharArray() inString.substring((inString.length() + 3) / 2 - 1, inString.length()).toCharArray inString.substring((inString.length() + 3) / 2 - 1, inString.length()) inString.substring inString (inString.length() + 3) / 2 - 1 (inString.length() + 3) / 2 (inString.length() + 3) inString.length() inString.length inString 3 2 1 inString.length() inString.length inString char[] inst = inString.toCharArray(); inst inString.toCharArray() inString.toCharArray inString boolean ans = true; ans true inString = null inString null for (int i = 0; i < inst.length; i++) {
            if (inst[i] != inst[inst.length - 1 - i]) {
                ans = false;
                break;
            }
        } int i = 0; int i = 0; i 0 i < inst.length i inst.length inst inst.length i++ i++ i {
            if (inst[i] != inst[inst.length - 1 - i]) {
                ans = false;
                break;
            }
        } {
            if (inst[i] != inst[inst.length - 1 - i]) {
                ans = false;
                break;
            }
        } if (inst[i] != inst[inst.length - 1 - i]) {
                ans = false;
                break;
            } inst[i] != inst[inst.length - 1 - i] inst[i] inst i inst[inst.length - 1 - i] inst inst.length - 1 - i inst.length - 1 - i inst.length inst inst.length 1 i {
                ans = false;
                break;
            } ans = false ans false break; for (int i = 0; i < subSt1.length; i++) {
            if (subSt1[i] != subSt1[subSt1.length - 1 - i]) {
                ans = false;
                break;
            }
        } int i = 0; int i = 0; i 0 i < subSt1.length i subSt1.length subSt1 subSt1.length i++ i++ i {
            if (subSt1[i] != subSt1[subSt1.length - 1 - i]) {
                ans = false;
                break;
            }
        } {
            if (subSt1[i] != subSt1[subSt1.length - 1 - i]) {
                ans = false;
                break;
            }
        } if (subSt1[i] != subSt1[subSt1.length - 1 - i]) {
                ans = false;
                break;
            } subSt1[i] != subSt1[subSt1.length - 1 - i] subSt1[i] subSt1 i subSt1[subSt1.length - 1 - i] subSt1 subSt1.length - 1 - i subSt1.length - 1 - i subSt1.length subSt1 subSt1.length 1 i {
                ans = false;
                break;
            } ans = false ans false break; for (int i = 0; i < subSt2.length; i++) {
            if (subSt2[i] != subSt2[subSt2.length - 1 - i]) {
                ans = false;
                break;
            }
        } int i = 0; int i = 0; i 0 i < subSt2.length i subSt2.length subSt2 subSt2.length i++ i++ i {
            if (subSt2[i] != subSt2[subSt2.length - 1 - i]) {
                ans = false;
                break;
            }
        } {
            if (subSt2[i] != subSt2[subSt2.length - 1 - i]) {
                ans = false;
                break;
            }
        } if (subSt2[i] != subSt2[subSt2.length - 1 - i]) {
                ans = false;
                break;
            } subSt2[i] != subSt2[subSt2.length - 1 - i] subSt2[i] subSt2 i subSt2[subSt2.length - 1 - i] subSt2 subSt2.length - 1 - i subSt2.length - 1 - i subSt2.length subSt2 subSt2.length 1 i {
                ans = false;
                break;
            } ans = false ans false break; System.out.println(ans ? "Yes" : "No") System.out.println System.out System System.out ans ? "Yes" : "No" ans "Yes" "No" String[] args args public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String inString = scanner.next();
        scanner.close();

        char[] subSt1 = inString.substring(0, (inString.length() - 1) / 2).toCharArray();
        char[] subSt2 = inString.substring((inString.length() + 3) / 2 - 1, inString.length()).toCharArray();
        char[] inst = inString.toCharArray();
        boolean ans = true;
        inString = null;

        for (int i = 0; i < inst.length; i++) {
            if (inst[i] != inst[inst.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt1.length; i++) {
            if (subSt1[i] != subSt1[subSt1.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt2.length; i++) {
            if (subSt2[i] != subSt2[subSt2.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        System.out.println(ans ? "Yes" : "No");

    }
} public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String inString = scanner.next();
        scanner.close();

        char[] subSt1 = inString.substring(0, (inString.length() - 1) / 2).toCharArray();
        char[] subSt2 = inString.substring((inString.length() + 3) / 2 - 1, inString.length()).toCharArray();
        char[] inst = inString.toCharArray();
        boolean ans = true;
        inString = null;

        for (int i = 0; i < inst.length; i++) {
            if (inst[i] != inst[inst.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt1.length; i++) {
            if (subSt1[i] != subSt1[subSt1.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt2.length; i++) {
            if (subSt2[i] != subSt2[subSt2.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        System.out.println(ans ? "Yes" : "No");

    }
} Main
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String inString = scanner.next();
        scanner.close();

        char[] subSt1 = inString.substring(0, (inString.length() - 1) / 2).toCharArray();
        char[] subSt2 = inString.substring((inString.length() + 3) / 2 - 1, inString.length()).toCharArray();
        char[] inst = inString.toCharArray();
        boolean ans = true;
        inString = null;

        for (int i = 0; i < inst.length; i++) {
            if (inst[i] != inst[inst.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt1.length; i++) {
            if (subSt1[i] != subSt1[subSt1.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        for (int i = 0; i < subSt2.length; i++) {
            if (subSt2[i] != subSt2[subSt2.length - 1 - i]) {
                ans = false;
                break;
            }
        }

        System.out.println(ans ? "Yes" : "No");

    }
}