import Data.List
import Data.Bool

main = do
        s <- getLine
        putStrLn $ ans s

ans :: String -> String
ans s = if (isPalindrome s) && (isPalindrome (take (((length s)-1) `div` 2) s) ) && (isPalindrome (drop (((length s)+1) `div` 2) s)) 
          then "Yes"
          else "No"

isPalindrome :: String -> Bool
isPalindrome s= (s == reverse s)
