import java.util.Scanner;

public class Main {
	public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        Main m = new Main(sc);
        m.show(m.solve());
        sc.close();
    }
    
	//フィールド
    Scanner sc;
    String S;
    
    //入力
    Main(Scanner sc) {
        this.sc = sc;
        S = sc.next();
    }
    
    //解答処理
    private boolean solve() {
    	boolean judge = false;
    	int N = S.length();
      
    	if (Palindrome(S.substring(0, N/2)) && Palindrome(S.substring(N/2+1, N)) && Palindrome(S)) {
    		judge = true;
    	}
         
        return judge;
    }
    
    private boolean Palindrome(String str) {	//回文か判定するメソッド
    	boolean kaibun = false;
    	StringBuilder reverses = new StringBuilder(str).reverse();
    	String reverseS = reverses.toString();
    	
    	if (str.equals(reverseS)) {
    		kaibun = true;
    	}
    	
    	return kaibun;
    }
    
    //出力
    public void show(boolean answer) {
        if (answer) {
        	System.out.println("Yes");
        } else {
        	System.out.println("No");
        }
    }

}

/tmp/hf-datasets-cache/medium/datasets/42704881117311-config-parquet-and-info-qiankunmu-Project_CodeNet-896c9d36/hub/datasets--qiankunmu--Project_CodeNet_Python800_and_Java250/snapshots/c899fde44a77ba1cc14973ed3de064e4ff3aadc7/Project_CodeNet_Java250.tar.gz