import java.util.*;

public class Main{
    public static void main(String [] args){
        int n,m=0;
        Scanner sc = new Scanner(System.in);
        String st;
        String kiridasi;
        String kiridasi1;
        String kiridasi2;
        st=sc.nextLine();   //文字列格納
        String[] list=st.split(""); //文字列から配列へ
        ArrayList<String> str2=new ArrayList<String>();//list str2を作った
        for(int i=list.length-1;i>=0;i--){
            str2.add(list[i]);              //str2の中へ逆文字列を配列として格納
        }
        kiridasi =String.join("",str2);//連結メソッドjoin 使用 文字列へと戻す
        n=(list.length-1)/2;
        m=(list.length+3)/2;
        String a = st.substring(0,n);
        String b = st.substring(m-1,list.length);
        ArrayList<String> str3=new ArrayList<String>();
        ArrayList<String> str4=new ArrayList<String>();
        for(int k=0;k<n;k++){
                str3.add(list[k]);
        }
        kiridasi1=String.join("",str3);
        for(int l=0;l<n;l++){
                str4.add(list[l]);
        }
        kiridasi2=String.join("",str4);
        if(st.equals(kiridasi) && kiridasi1.equals(a) && kiridasi2.equals(b)){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    }

} import java.util.*; util.* java public class Main{
    public static void main(String [] args){
        int n,m=0;
        Scanner sc = new Scanner(System.in);
        String st;
        String kiridasi;
        String kiridasi1;
        String kiridasi2;
        st=sc.nextLine();   //文字列格納
        String[] list=st.split(""); //文字列から配列へ
        ArrayList<String> str2=new ArrayList<String>();//list str2を作った
        for(int i=list.length-1;i>=0;i--){
            str2.add(list[i]);              //str2の中へ逆文字列を配列として格納
        }
        kiridasi =String.join("",str2);//連結メソッドjoin 使用 文字列へと戻す
        n=(list.length-1)/2;
        m=(list.length+3)/2;
        String a = st.substring(0,n);
        String b = st.substring(m-1,list.length);
        ArrayList<String> str3=new ArrayList<String>();
        ArrayList<String> str4=new ArrayList<String>();
        for(int k=0;k<n;k++){
                str3.add(list[k]);
        }
        kiridasi1=String.join("",str3);
        for(int l=0;l<n;l++){
                str4.add(list[l]);
        }
        kiridasi2=String.join("",str4);
        if(st.equals(kiridasi) && kiridasi1.equals(a) && kiridasi2.equals(b)){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    }

} Main public static void main(String [] args){
        int n,m=0;
        Scanner sc = new Scanner(System.in);
        String st;
        String kiridasi;
        String kiridasi1;
        String kiridasi2;
        st=sc.nextLine();   //文字列格納
        String[] list=st.split(""); //文字列から配列へ
        ArrayList<String> str2=new ArrayList<String>();//list str2を作った
        for(int i=list.length-1;i>=0;i--){
            str2.add(list[i]);              //str2の中へ逆文字列を配列として格納
        }
        kiridasi =String.join("",str2);//連結メソッドjoin 使用 文字列へと戻す
        n=(list.length-1)/2;
        m=(list.length+3)/2;
        String a = st.substring(0,n);
        String b = st.substring(m-1,list.length);
        ArrayList<String> str3=new ArrayList<String>();
        ArrayList<String> str4=new ArrayList<String>();
        for(int k=0;k<n;k++){
                str3.add(list[k]);
        }
        kiridasi1=String.join("",str3);
        for(int l=0;l<n;l++){
                str4.add(list[l]);
        }
        kiridasi2=String.join("",str4);
        if(st.equals(kiridasi) && kiridasi1.equals(a) && kiridasi2.equals(b)){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    } main {
        int n,m=0;
        Scanner sc = new Scanner(System.in);
        String st;
        String kiridasi;
        String kiridasi1;
        String kiridasi2;
        st=sc.nextLine();   //文字列格納
        String[] list=st.split(""); //文字列から配列へ
        ArrayList<String> str2=new ArrayList<String>();//list str2を作った
        for(int i=list.length-1;i>=0;i--){
            str2.add(list[i]);              //str2の中へ逆文字列を配列として格納
        }
        kiridasi =String.join("",str2);//連結メソッドjoin 使用 文字列へと戻す
        n=(list.length-1)/2;
        m=(list.length+3)/2;
        String a = st.substring(0,n);
        String b = st.substring(m-1,list.length);
        ArrayList<String> str3=new ArrayList<String>();
        ArrayList<String> str4=new ArrayList<String>();
        for(int k=0;k<n;k++){
                str3.add(list[k]);
        }
        kiridasi1=String.join("",str3);
        for(int l=0;l<n;l++){
                str4.add(list[l]);
        }
        kiridasi2=String.join("",str4);
        if(st.equals(kiridasi) && kiridasi1.equals(a) && kiridasi2.equals(b)){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    } int n n m=0; m 0 Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String st; st String kiridasi; kiridasi String kiridasi1; kiridasi1 String kiridasi2; kiridasi2 st=sc.nextLine() st sc.nextLine() sc.nextLine sc String[] list=st.split(""); list st.split("") st.split st "" ArrayList<String> str2=new ArrayList<String>(); str2 new ArrayList<String>() for(int i=list.length-1;i>=0;i--){
            str2.add(list[i]);              //str2の中へ逆文字列を配列として格納
        } int i=list.length-1; int i=list.length-1; i list.length-1 list.length list list.length 1 i>=0 i 0 i-- i-- i {
            str2.add(list[i]);              //str2の中へ逆文字列を配列として格納
        } {
            str2.add(list[i]);              //str2の中へ逆文字列を配列として格納
        } str2.add(list[i]) str2.add str2 list[i] list i kiridasi =String.join("",str2) kiridasi String.join("",str2) String.join String "" str2 n=(list.length-1)/2 n (list.length-1)/2 (list.length-1) list.length list list.length 1 2 m=(list.length+3)/2 m (list.length+3)/2 (list.length+3) list.length list list.length 3 2 String a = st.substring(0,n); a st.substring(0,n) st.substring st 0 n String b = st.substring(m-1,list.length); b st.substring(m-1,list.length) st.substring st m-1 m 1 list.length list list.length ArrayList<String> str3=new ArrayList<String>(); str3 new ArrayList<String>() ArrayList<String> str4=new ArrayList<String>(); str4 new ArrayList<String>() for(int k=0;k<n;k++){
                str3.add(list[k]);
        } int k=0; int k=0; k 0 k<n k n k++ k++ k {
                str3.add(list[k]);
        } {
                str3.add(list[k]);
        } str3.add(list[k]) str3.add str3 list[k] list k kiridasi1=String.join("",str3) kiridasi1 String.join("",str3) String.join String "" str3 for(int l=0;l<n;l++){
                str4.add(list[l]);
        } int l=0; int l=0; l 0 l<n l n l++ l++ l {
                str4.add(list[l]);
        } {
                str4.add(list[l]);
        } str4.add(list[l]) str4.add str4 list[l] list l kiridasi2=String.join("",str4) kiridasi2 String.join("",str4) String.join String "" str4 if(st.equals(kiridasi) && kiridasi1.equals(a) && kiridasi2.equals(b)){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        } st.equals(kiridasi) && kiridasi1.equals(a) && kiridasi2.equals(b) st.equals(kiridasi) && kiridasi1.equals(a) && kiridasi2.equals(b) st.equals(kiridasi) st.equals st kiridasi kiridasi1.equals(a) kiridasi1.equals kiridasi1 a kiridasi2.equals(b) kiridasi2.equals kiridasi2 b {
            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 void main(String [] args){
        int n,m=0;
        Scanner sc = new Scanner(System.in);
        String st;
        String kiridasi;
        String kiridasi1;
        String kiridasi2;
        st=sc.nextLine();   //文字列格納
        String[] list=st.split(""); //文字列から配列へ
        ArrayList<String> str2=new ArrayList<String>();//list str2を作った
        for(int i=list.length-1;i>=0;i--){
            str2.add(list[i]);              //str2の中へ逆文字列を配列として格納
        }
        kiridasi =String.join("",str2);//連結メソッドjoin 使用 文字列へと戻す
        n=(list.length-1)/2;
        m=(list.length+3)/2;
        String a = st.substring(0,n);
        String b = st.substring(m-1,list.length);
        ArrayList<String> str3=new ArrayList<String>();
        ArrayList<String> str4=new ArrayList<String>();
        for(int k=0;k<n;k++){
                str3.add(list[k]);
        }
        kiridasi1=String.join("",str3);
        for(int l=0;l<n;l++){
                str4.add(list[l]);
        }
        kiridasi2=String.join("",str4);
        if(st.equals(kiridasi) && kiridasi1.equals(a) && kiridasi2.equals(b)){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    }

} public class Main{
    public static void main(String [] args){
        int n,m=0;
        Scanner sc = new Scanner(System.in);
        String st;
        String kiridasi;
        String kiridasi1;
        String kiridasi2;
        st=sc.nextLine();   //文字列格納
        String[] list=st.split(""); //文字列から配列へ
        ArrayList<String> str2=new ArrayList<String>();//list str2を作った
        for(int i=list.length-1;i>=0;i--){
            str2.add(list[i]);              //str2の中へ逆文字列を配列として格納
        }
        kiridasi =String.join("",str2);//連結メソッドjoin 使用 文字列へと戻す
        n=(list.length-1)/2;
        m=(list.length+3)/2;
        String a = st.substring(0,n);
        String b = st.substring(m-1,list.length);
        ArrayList<String> str3=new ArrayList<String>();
        ArrayList<String> str4=new ArrayList<String>();
        for(int k=0;k<n;k++){
                str3.add(list[k]);
        }
        kiridasi1=String.join("",str3);
        for(int l=0;l<n;l++){
                str4.add(list[l]);
        }
        kiridasi2=String.join("",str4);
        if(st.equals(kiridasi) && kiridasi1.equals(a) && kiridasi2.equals(b)){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    }

} Main
import java.util.*;

public class Main{
    public static void main(String [] args){
        int n,m=0;
        Scanner sc = new Scanner(System.in);
        String st;
        String kiridasi;
        String kiridasi1;
        String kiridasi2;
        st=sc.nextLine();   //文字列格納
        String[] list=st.split(""); //文字列から配列へ
        ArrayList<String> str2=new ArrayList<String>();//list str2を作った
        for(int i=list.length-1;i>=0;i--){
            str2.add(list[i]);              //str2の中へ逆文字列を配列として格納
        }
        kiridasi =String.join("",str2);//連結メソッドjoin 使用 文字列へと戻す
        n=(list.length-1)/2;
        m=(list.length+3)/2;
        String a = st.substring(0,n);
        String b = st.substring(m-1,list.length);
        ArrayList<String> str3=new ArrayList<String>();
        ArrayList<String> str4=new ArrayList<String>();
        for(int k=0;k<n;k++){
                str3.add(list[k]);
        }
        kiridasi1=String.join("",str3);
        for(int l=0;l<n;l++){
                str4.add(list[l]);
        }
        kiridasi2=String.join("",str4);
        if(st.equals(kiridasi) && kiridasi1.equals(a) && kiridasi2.equals(b)){
            System.out.println("Yes");
        }else{
            System.out.println("No");
        }
    }

}