import java.io.FileNotFoundException;
import java.util.Scanner;

public class Main {
    @SuppressWarnings("deprecation")
	public static void main(String[] args) throws FileNotFoundException {

//    	File file = new File("src/in.txt");

        //コード
//    	Scanner sc = new Scanner(file);
    	Scanner sc = new Scanner(System.in);

    	String S = sc.next();

    	boolean result1 = isPalindrome(S);
    	boolean result2 = isPalindrome(S.substring(0, (S.length()-1)/2));
    	if(result1&&result2) {
    		System.out.println("Yes");
    	} else {
    		System.out.println("No");
    	}
    }

    public static boolean isPalindrome(String s) {

    	boolean result = true;

    	if(s.length()%2==0) {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<s.length()/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	} else {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<(s.length()-1)/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	}

    	return result;
    }

} import java.io.FileNotFoundException; FileNotFoundException java.io import java.util.Scanner; Scanner java.util public class Main {
    @SuppressWarnings("deprecation")
	public static void main(String[] args) throws FileNotFoundException {

//    	File file = new File("src/in.txt");

        //コード
//    	Scanner sc = new Scanner(file);
    	Scanner sc = new Scanner(System.in);

    	String S = sc.next();

    	boolean result1 = isPalindrome(S);
    	boolean result2 = isPalindrome(S.substring(0, (S.length()-1)/2));
    	if(result1&&result2) {
    		System.out.println("Yes");
    	} else {
    		System.out.println("No");
    	}
    }

    public static boolean isPalindrome(String s) {

    	boolean result = true;

    	if(s.length()%2==0) {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<s.length()/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	} else {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<(s.length()-1)/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	}

    	return result;
    }

} Main @SuppressWarnings("deprecation")
	public static void main(String[] args) throws FileNotFoundException {

//    	File file = new File("src/in.txt");

        //コード
//    	Scanner sc = new Scanner(file);
    	Scanner sc = new Scanner(System.in);

    	String S = sc.next();

    	boolean result1 = isPalindrome(S);
    	boolean result2 = isPalindrome(S.substring(0, (S.length()-1)/2));
    	if(result1&&result2) {
    		System.out.println("Yes");
    	} else {
    		System.out.println("No");
    	}
    } main {

//    	File file = new File("src/in.txt");

        //コード
//    	Scanner sc = new Scanner(file);
    	Scanner sc = new Scanner(System.in);

    	String S = sc.next();

    	boolean result1 = isPalindrome(S);
    	boolean result2 = isPalindrome(S.substring(0, (S.length()-1)/2));
    	if(result1&&result2) {
    		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 boolean result1 = isPalindrome(S); result1 isPalindrome(S) isPalindrome S boolean result2 = isPalindrome(S.substring(0, (S.length()-1)/2)); result2 isPalindrome(S.substring(0, (S.length()-1)/2)) isPalindrome 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 if(result1&&result2) {
    		System.out.println("Yes");
    	} else {
    		System.out.println("No");
    	} result1&&result2 result1 result2 {
    		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 isPalindrome(String s) {

    	boolean result = true;

    	if(s.length()%2==0) {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<s.length()/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	} else {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<(s.length()-1)/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	}

    	return result;
    } isPalindrome {

    	boolean result = true;

    	if(s.length()%2==0) {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<s.length()/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	} else {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<(s.length()-1)/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	}

    	return result;
    } boolean result = true; result true if(s.length()%2==0) {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<s.length()/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	} else {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<(s.length()-1)/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	} s.length()%2==0 s.length()%2 s.length() s.length s 2 0 {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<s.length()/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	} char[] arr = s.toCharArray(); arr s.toCharArray() s.toCharArray s for(int i=0;i<s.length()/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		} int i=0; int i=0; i 0 i<s.length()/2 i s.length()/2 s.length() s.length s 2 i++ i++ i {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		} {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		} if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			} arr[i]!=arr[s.length()-1-i] arr[i] arr i arr[s.length()-1-i] arr s.length()-1-i s.length()-1-i s.length() s.length s 1 i {
    				result = false;
    			} result = false result false {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<(s.length()-1)/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	} char[] arr = s.toCharArray(); arr s.toCharArray() s.toCharArray s for(int i=0;i<(s.length()-1)/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		} int i=0; int i=0; i 0 i<(s.length()-1)/2 i (s.length()-1)/2 (s.length()-1) s.length() s.length s 1 2 i++ i++ i {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		} {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		} if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			} arr[i]!=arr[s.length()-1-i] arr[i] arr i arr[s.length()-1-i] arr s.length()-1-i s.length()-1-i s.length() s.length s 1 i {
    				result = false;
    			} result = false result false return result; result String s s public class Main {
    @SuppressWarnings("deprecation")
	public static void main(String[] args) throws FileNotFoundException {

//    	File file = new File("src/in.txt");

        //コード
//    	Scanner sc = new Scanner(file);
    	Scanner sc = new Scanner(System.in);

    	String S = sc.next();

    	boolean result1 = isPalindrome(S);
    	boolean result2 = isPalindrome(S.substring(0, (S.length()-1)/2));
    	if(result1&&result2) {
    		System.out.println("Yes");
    	} else {
    		System.out.println("No");
    	}
    }

    public static boolean isPalindrome(String s) {

    	boolean result = true;

    	if(s.length()%2==0) {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<s.length()/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	} else {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<(s.length()-1)/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	}

    	return result;
    }

} public class Main {
    @SuppressWarnings("deprecation")
	public static void main(String[] args) throws FileNotFoundException {

//    	File file = new File("src/in.txt");

        //コード
//    	Scanner sc = new Scanner(file);
    	Scanner sc = new Scanner(System.in);

    	String S = sc.next();

    	boolean result1 = isPalindrome(S);
    	boolean result2 = isPalindrome(S.substring(0, (S.length()-1)/2));
    	if(result1&&result2) {
    		System.out.println("Yes");
    	} else {
    		System.out.println("No");
    	}
    }

    public static boolean isPalindrome(String s) {

    	boolean result = true;

    	if(s.length()%2==0) {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<s.length()/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	} else {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<(s.length()-1)/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	}

    	return result;
    }

} Main
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Main {
    @SuppressWarnings("deprecation")
	public static void main(String[] args) throws FileNotFoundException {

//    	File file = new File("src/in.txt");

        //コード
//    	Scanner sc = new Scanner(file);
    	Scanner sc = new Scanner(System.in);

    	String S = sc.next();

    	boolean result1 = isPalindrome(S);
    	boolean result2 = isPalindrome(S.substring(0, (S.length()-1)/2));
    	if(result1&&result2) {
    		System.out.println("Yes");
    	} else {
    		System.out.println("No");
    	}
    }

    public static boolean isPalindrome(String s) {

    	boolean result = true;

    	if(s.length()%2==0) {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<s.length()/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	} else {
    		char[] arr = s.toCharArray();
    		for(int i=0;i<(s.length()-1)/2;i++) {
    			if(arr[i]!=arr[s.length()-1-i]) {
    				result = false;
    			}
    		}
    	}

    	return result;
    }

}
