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.substring(0, s.length() / 2))) {
            System.out.println("No");
            return;
        }
        if (!isKaibun(s)) {
            System.out.println("No");
            return;
        }
        System.out.println("Yes");
    }

    private static boolean isKaibun(String s) {
        StringBuilder sb = new StringBuilder(s);
        sb.reverse();
        return s.equals(sb.toString());
    }
} 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.substring(0, s.length() / 2))) {
            System.out.println("No");
            return;
        }
        if (!isKaibun(s)) {
            System.out.println("No");
            return;
        }
        System.out.println("Yes");
    }

    private static boolean isKaibun(String s) {
        StringBuilder sb = new StringBuilder(s);
        sb.reverse();
        return s.equals(sb.toString());
    }
} Main public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        if (!isKaibun(s.substring(0, s.length() / 2))) {
            System.out.println("No");
            return;
        }
        if (!isKaibun(s)) {
            System.out.println("No");
            return;
        }
        System.out.println("Yes");
    } main {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        if (!isKaibun(s.substring(0, s.length() / 2))) {
            System.out.println("No");
            return;
        }
        if (!isKaibun(s)) {
            System.out.println("No");
            return;
        }
        System.out.println("Yes");
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String s = sc.next(); s sc.next() sc.next sc if (!isKaibun(s.substring(0, s.length() / 2))) {
            System.out.println("No");
            return;
        } !isKaibun(s.substring(0, s.length() / 2)) 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("No");
            return;
        } System.out.println("No") System.out.println System.out System System.out "No" return; if (!isKaibun(s)) {
            System.out.println("No");
            return;
        } !isKaibun(s) isKaibun(s) isKaibun s {
            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 private static boolean isKaibun(String s) {
        StringBuilder sb = new StringBuilder(s);
        sb.reverse();
        return s.equals(sb.toString());
    } isKaibun {
        StringBuilder sb = new StringBuilder(s);
        sb.reverse();
        return s.equals(sb.toString());
    } StringBuilder sb = new StringBuilder(s); sb new StringBuilder(s) sb.reverse() sb.reverse sb return s.equals(sb.toString()); s.equals(sb.toString()) s.equals s sb.toString() sb.toString sb 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.substring(0, s.length() / 2))) {
            System.out.println("No");
            return;
        }
        if (!isKaibun(s)) {
            System.out.println("No");
            return;
        }
        System.out.println("Yes");
    }

    private static boolean isKaibun(String s) {
        StringBuilder sb = new StringBuilder(s);
        sb.reverse();
        return s.equals(sb.toString());
    }
} public class Main {

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

    private static boolean isKaibun(String s) {
        StringBuilder sb = new StringBuilder(s);
        sb.reverse();
        return s.equals(sb.toString());
    }
} 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.substring(0, s.length() / 2))) {
            System.out.println("No");
            return;
        }
        if (!isKaibun(s)) {
            System.out.println("No");
            return;
        }
        System.out.println("Yes");
    }

    private static boolean isKaibun(String s) {
        StringBuilder sb = new StringBuilder(s);
        sb.reverse();
        return s.equals(sb.toString());
    }
}