import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static boolean is_kaibun(String s){
        for(int i = 0;i < s.length()/2+1;i++){
            if(s.charAt(i) != s.charAt(s.length()-1-i)){
                return false;
            }
        }
        return true;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        if(is_kaibun(s) && is_kaibun(s.substring(0, (s.length()-1)/2)) && is_kaibun(s.substring((s.length()+2)/2,s.length()))){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    }
} import java.math.BigInteger; BigInteger java.math import java.util.Scanner; Scanner java.util public class Main {
    public static boolean is_kaibun(String s){
        for(int i = 0;i < s.length()/2+1;i++){
            if(s.charAt(i) != s.charAt(s.length()-1-i)){
                return false;
            }
        }
        return true;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        if(is_kaibun(s) && is_kaibun(s.substring(0, (s.length()-1)/2)) && is_kaibun(s.substring((s.length()+2)/2,s.length()))){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    }
} Main public static boolean is_kaibun(String s){
        for(int i = 0;i < s.length()/2+1;i++){
            if(s.charAt(i) != s.charAt(s.length()-1-i)){
                return false;
            }
        }
        return true;
    } is_kaibun {
        for(int i = 0;i < s.length()/2+1;i++){
            if(s.charAt(i) != s.charAt(s.length()-1-i)){
                return false;
            }
        }
        return true;
    } for(int i = 0;i < s.length()/2+1;i++){
            if(s.charAt(i) != s.charAt(s.length()-1-i)){
                return false;
            }
        } int i = 0; int i = 0; i 0 i < s.length()/2+1 i s.length()/2+1 s.length()/2 s.length() s.length s 2 1 i++ i++ i {
            if(s.charAt(i) != s.charAt(s.length()-1-i)){
                return false;
            }
        } {
            if(s.charAt(i) != s.charAt(s.length()-1-i)){
                return false;
            }
        } if(s.charAt(i) != s.charAt(s.length()-1-i)){
                return false;
            } s.charAt(i) != s.charAt(s.length()-1-i) s.charAt(i) s.charAt s i s.charAt(s.length()-1-i) s.charAt s s.length()-1-i s.length()-1-i s.length() s.length s 1 i {
                return false;
            } return false; false return true; true String s s public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        if(is_kaibun(s) && is_kaibun(s.substring(0, (s.length()-1)/2)) && is_kaibun(s.substring((s.length()+2)/2,s.length()))){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    } main {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        if(is_kaibun(s) && is_kaibun(s.substring(0, (s.length()-1)/2)) && is_kaibun(s.substring((s.length()+2)/2,s.length()))){
            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(is_kaibun(s) && is_kaibun(s.substring(0, (s.length()-1)/2)) && is_kaibun(s.substring((s.length()+2)/2,s.length()))){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        } is_kaibun(s) && is_kaibun(s.substring(0, (s.length()-1)/2)) && is_kaibun(s.substring((s.length()+2)/2,s.length())) is_kaibun(s) && is_kaibun(s.substring(0, (s.length()-1)/2)) && is_kaibun(s.substring((s.length()+2)/2,s.length())) is_kaibun(s) is_kaibun s is_kaibun(s.substring(0, (s.length()-1)/2)) is_kaibun s.substring(0, (s.length()-1)/2) s.substring s 0 (s.length()-1)/2 (s.length()-1) s.length() s.length s 1 2 is_kaibun(s.substring((s.length()+2)/2,s.length())) is_kaibun s.substring((s.length()+2)/2,s.length()) s.substring s (s.length()+2)/2 (s.length()+2) s.length() s.length s 2 2 s.length() s.length s {
            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 class Main {
    public static boolean is_kaibun(String s){
        for(int i = 0;i < s.length()/2+1;i++){
            if(s.charAt(i) != s.charAt(s.length()-1-i)){
                return false;
            }
        }
        return true;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        if(is_kaibun(s) && is_kaibun(s.substring(0, (s.length()-1)/2)) && is_kaibun(s.substring((s.length()+2)/2,s.length()))){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    }
} public class Main {
    public static boolean is_kaibun(String s){
        for(int i = 0;i < s.length()/2+1;i++){
            if(s.charAt(i) != s.charAt(s.length()-1-i)){
                return false;
            }
        }
        return true;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        if(is_kaibun(s) && is_kaibun(s.substring(0, (s.length()-1)/2)) && is_kaibun(s.substring((s.length()+2)/2,s.length()))){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    }
} Main
import java.math.BigInteger;
import java.util.Scanner;

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