import java.util.*;
 
/*
問題文
長さが奇数である文字列 S が以下の条件をすべて満たすとき、S は「強い回文」であるといいます。
 
S は回文である。
N を S の長さとするとき、S の 1 文字目から (N−1)/2 文字目まで(両端含む)からなる文字列は回文である。
S の (N+3)/2 文字目から 
N 文字目まで(両端含む)からなる文字列は回文である。
S が強い回文かどうかを判定してください。
*/
 
 
 
public class Main {
    public static void main(String[] args){
 
        //スキャン
        Scanner s = new Scanner(System.in);
        String text =s.next();
        int textlen = text.length();
        boolean cyc1 = cycloid(text);
        boolean cyc2 = cycloid(
            text.substring(
                0,
                (textlen)/2)
                );
 
 
        boolean cyc3 = cycloid(
            text.substring(
                (textlen+3)/2-1,
                textlen)
            );
 
        if(cyc1 ==true && cyc2 == true && cyc3 == true){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    
    }
 
    //回文判定処理
    private static boolean cycloid(String hoge){
        //文字列長
        int stLong = hoge.length();
        for(int i=0;i <= stLong/2;i++){
            if(hoge.charAt(i) 
                != 
                hoge.charAt(stLong-1 - i) ){
                    return false;
            };
        } 
        return true;
    }
 
    
} import java.util.*; util.* java public class Main {
    public static void main(String[] args){
 
        //スキャン
        Scanner s = new Scanner(System.in);
        String text =s.next();
        int textlen = text.length();
        boolean cyc1 = cycloid(text);
        boolean cyc2 = cycloid(
            text.substring(
                0,
                (textlen)/2)
                );
 
 
        boolean cyc3 = cycloid(
            text.substring(
                (textlen+3)/2-1,
                textlen)
            );
 
        if(cyc1 ==true && cyc2 == true && cyc3 == true){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    
    }
 
    //回文判定処理
    private static boolean cycloid(String hoge){
        //文字列長
        int stLong = hoge.length();
        for(int i=0;i <= stLong/2;i++){
            if(hoge.charAt(i) 
                != 
                hoge.charAt(stLong-1 - i) ){
                    return false;
            };
        } 
        return true;
    }
 
    
} Main public static void main(String[] args){
 
        //スキャン
        Scanner s = new Scanner(System.in);
        String text =s.next();
        int textlen = text.length();
        boolean cyc1 = cycloid(text);
        boolean cyc2 = cycloid(
            text.substring(
                0,
                (textlen)/2)
                );
 
 
        boolean cyc3 = cycloid(
            text.substring(
                (textlen+3)/2-1,
                textlen)
            );
 
        if(cyc1 ==true && cyc2 == true && cyc3 == true){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    
    } main {
 
        //スキャン
        Scanner s = new Scanner(System.in);
        String text =s.next();
        int textlen = text.length();
        boolean cyc1 = cycloid(text);
        boolean cyc2 = cycloid(
            text.substring(
                0,
                (textlen)/2)
                );
 
 
        boolean cyc3 = cycloid(
            text.substring(
                (textlen+3)/2-1,
                textlen)
            );
 
        if(cyc1 ==true && cyc2 == true && cyc3 == true){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    
    } Scanner s = new Scanner(System.in); s new Scanner(System.in) String text =s.next(); text s.next() s.next s int textlen = text.length(); textlen text.length() text.length text boolean cyc1 = cycloid(text); cyc1 cycloid(text) cycloid text boolean cyc2 = cycloid(
            text.substring(
                0,
                (textlen)/2)
                ); cyc2 cycloid(
            text.substring(
                0,
                (textlen)/2)
                ) cycloid text.substring(
                0,
                (textlen)/2) text.substring text 0 (textlen)/2 (textlen) 2 boolean cyc3 = cycloid(
            text.substring(
                (textlen+3)/2-1,
                textlen)
            ); cyc3 cycloid(
            text.substring(
                (textlen+3)/2-1,
                textlen)
            ) cycloid text.substring(
                (textlen+3)/2-1,
                textlen) text.substring text (textlen+3)/2-1 (textlen+3)/2 (textlen+3) textlen 3 2 1 textlen if(cyc1 ==true && cyc2 == true && cyc3 == true){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        } cyc1 ==true && cyc2 == true && cyc3 == true cyc1 ==true && cyc2 == true && cyc3 == true cyc1 ==true cyc1 true cyc2 == true cyc2 true cyc3 == true cyc3 true {
            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 //回文判定処理
    private static boolean cycloid(String hoge){
        //文字列長
        int stLong = hoge.length();
        for(int i=0;i <= stLong/2;i++){
            if(hoge.charAt(i) 
                != 
                hoge.charAt(stLong-1 - i) ){
                    return false;
            };
        } 
        return true;
    } cycloid {
        //文字列長
        int stLong = hoge.length();
        for(int i=0;i <= stLong/2;i++){
            if(hoge.charAt(i) 
                != 
                hoge.charAt(stLong-1 - i) ){
                    return false;
            };
        } 
        return true;
    } int stLong = hoge.length(); stLong hoge.length() hoge.length hoge for(int i=0;i <= stLong/2;i++){
            if(hoge.charAt(i) 
                != 
                hoge.charAt(stLong-1 - i) ){
                    return false;
            };
        } int i=0; int i=0; i 0 i <= stLong/2 i stLong/2 stLong 2 i++ i++ i {
            if(hoge.charAt(i) 
                != 
                hoge.charAt(stLong-1 - i) ){
                    return false;
            };
        } {
            if(hoge.charAt(i) 
                != 
                hoge.charAt(stLong-1 - i) ){
                    return false;
            };
        } if(hoge.charAt(i) 
                != 
                hoge.charAt(stLong-1 - i) ){
                    return false;
            } hoge.charAt(i) 
                != 
                hoge.charAt(stLong-1 - i) hoge.charAt(i) hoge.charAt hoge i hoge.charAt(stLong-1 - i) hoge.charAt hoge stLong-1 - i stLong-1 - i stLong 1 i {
                    return false;
            } return false; false return true; true String hoge hoge public class Main {
    public static void main(String[] args){
 
        //スキャン
        Scanner s = new Scanner(System.in);
        String text =s.next();
        int textlen = text.length();
        boolean cyc1 = cycloid(text);
        boolean cyc2 = cycloid(
            text.substring(
                0,
                (textlen)/2)
                );
 
 
        boolean cyc3 = cycloid(
            text.substring(
                (textlen+3)/2-1,
                textlen)
            );
 
        if(cyc1 ==true && cyc2 == true && cyc3 == true){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    
    }
 
    //回文判定処理
    private static boolean cycloid(String hoge){
        //文字列長
        int stLong = hoge.length();
        for(int i=0;i <= stLong/2;i++){
            if(hoge.charAt(i) 
                != 
                hoge.charAt(stLong-1 - i) ){
                    return false;
            };
        } 
        return true;
    }
 
    
} public class Main {
    public static void main(String[] args){
 
        //スキャン
        Scanner s = new Scanner(System.in);
        String text =s.next();
        int textlen = text.length();
        boolean cyc1 = cycloid(text);
        boolean cyc2 = cycloid(
            text.substring(
                0,
                (textlen)/2)
                );
 
 
        boolean cyc3 = cycloid(
            text.substring(
                (textlen+3)/2-1,
                textlen)
            );
 
        if(cyc1 ==true && cyc2 == true && cyc3 == true){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    
    }
 
    //回文判定処理
    private static boolean cycloid(String hoge){
        //文字列長
        int stLong = hoge.length();
        for(int i=0;i <= stLong/2;i++){
            if(hoge.charAt(i) 
                != 
                hoge.charAt(stLong-1 - i) ){
                    return false;
            };
        } 
        return true;
    }
 
    
} Main
import java.util.*;
 
/*
問題文
長さが奇数である文字列 S が以下の条件をすべて満たすとき、S は「強い回文」であるといいます。
 
S は回文である。
N を S の長さとするとき、S の 1 文字目から (N−1)/2 文字目まで(両端含む)からなる文字列は回文である。
S の (N+3)/2 文字目から 
N 文字目まで(両端含む)からなる文字列は回文である。
S が強い回文かどうかを判定してください。
*/
 
 
 
public class Main {
    public static void main(String[] args){
 
        //スキャン
        Scanner s = new Scanner(System.in);
        String text =s.next();
        int textlen = text.length();
        boolean cyc1 = cycloid(text);
        boolean cyc2 = cycloid(
            text.substring(
                0,
                (textlen)/2)
                );
 
 
        boolean cyc3 = cycloid(
            text.substring(
                (textlen+3)/2-1,
                textlen)
            );
 
        if(cyc1 ==true && cyc2 == true && cyc3 == true){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    
    }
 
    //回文判定処理
    private static boolean cycloid(String hoge){
        //文字列長
        int stLong = hoge.length();
        for(int i=0;i <= stLong/2;i++){
            if(hoge.charAt(i) 
                != 
                hoge.charAt(stLong-1 - i) ){
                    return false;
            };
        } 
        return true;
    }
 
    
}
