import Data.List

main = do
    s <- getLine
    putStrLn $ if judge s then "Yes" else "No"

judge :: String -> Bool
judge xs = (xs == reverse xs) && (ini == reverse ini) && (las == reverse las)
    where n   = length xs
          ini = take ((n - 1) `div` 2) xs
          las = drop ((n + 1) `div` 2) xs