import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String S = sc.next();
        if (isKaibun(S) && isKaibun(S.substring(0, S.length()/2))) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }

    public static boolean isKaibun(String s) {
        boolean result = true;
        int len = s.length();
        for (int i=0; i<=len/2; i++) {
            if (s.charAt(i) != s.charAt(len-1-i)) {
                result = false;
                break;
            }
        }
        return result;
    }
} import java.util.Scanner; Scanner java.util public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String S = sc.next();
        if (isKaibun(S) && isKaibun(S.substring(0, S.length()/2))) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }

    public static boolean isKaibun(String s) {
        boolean result = true;
        int len = s.length();
        for (int i=0; i<=len/2; i++) {
            if (s.charAt(i) != s.charAt(len-1-i)) {
                result = false;
                break;
            }
        }
        return result;
    }
} Main public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String S = sc.next();
        if (isKaibun(S) && isKaibun(S.substring(0, S.length()/2))) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    } main {
        Scanner sc = new Scanner(System.in);
        String S = sc.next();
        if (isKaibun(S) && isKaibun(S.substring(0, S.length()/2))) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String S = sc.next(); S sc.next() sc.next sc if (isKaibun(S) && isKaibun(S.substring(0, S.length()/2))) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        } isKaibun(S) && isKaibun(S.substring(0, S.length()/2)) isKaibun(S) isKaibun S isKaibun(S.substring(0, S.length()/2)) isKaibun S.substring(0, S.length()/2) S.substring S 0 S.length()/2 S.length() S.length S 2 {
            System.out.println("Yes");
        } System.out.println("Yes") System.out.println System.out System System.out "Yes" {
            System.out.println("No");
        } System.out.println("No") System.out.println System.out System System.out "No" String[] args args public static boolean isKaibun(String s) {
        boolean result = true;
        int len = s.length();
        for (int i=0; i<=len/2; i++) {
            if (s.charAt(i) != s.charAt(len-1-i)) {
                result = false;
                break;
            }
        }
        return result;
    } isKaibun {
        boolean result = true;
        int len = s.length();
        for (int i=0; i<=len/2; i++) {
            if (s.charAt(i) != s.charAt(len-1-i)) {
                result = false;
                break;
            }
        }
        return result;
    } boolean result = true; result true int len = s.length(); len s.length() s.length s for (int i=0; i<=len/2; i++) {
            if (s.charAt(i) != s.charAt(len-1-i)) {
                result = false;
                break;
            }
        } int i=0; int i=0; i 0 i<=len/2 i len/2 len 2 i++ i++ i {
            if (s.charAt(i) != s.charAt(len-1-i)) {
                result = false;
                break;
            }
        } {
            if (s.charAt(i) != s.charAt(len-1-i)) {
                result = false;
                break;
            }
        } if (s.charAt(i) != s.charAt(len-1-i)) {
                result = false;
                break;
            } s.charAt(i) != s.charAt(len-1-i) s.charAt(i) s.charAt s i s.charAt(len-1-i) s.charAt s len-1-i len-1-i len 1 i {
                result = false;
                break;
            } result = false result false break; return result; result String s s public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String S = sc.next();
        if (isKaibun(S) && isKaibun(S.substring(0, S.length()/2))) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }

    public static boolean isKaibun(String s) {
        boolean result = true;
        int len = s.length();
        for (int i=0; i<=len/2; i++) {
            if (s.charAt(i) != s.charAt(len-1-i)) {
                result = false;
                break;
            }
        }
        return result;
    }
} public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String S = sc.next();
        if (isKaibun(S) && isKaibun(S.substring(0, S.length()/2))) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }

    public static boolean isKaibun(String s) {
        boolean result = true;
        int len = s.length();
        for (int i=0; i<=len/2; i++) {
            if (s.charAt(i) != s.charAt(len-1-i)) {
                result = false;
                break;
            }
        }
        return result;
    }
} Main
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String S = sc.next();
        if (isKaibun(S) && isKaibun(S.substring(0, S.length()/2))) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }

    public static boolean isKaibun(String s) {
        boolean result = true;
        int len = s.length();
        for (int i=0; i<=len/2; i++) {
            if (s.charAt(i) != s.charAt(len-1-i)) {
                result = false;
                break;
            }
        }
        return result;
    }
}