import Control.Monad
import Data.Maybe
import qualified Data.ByteString.Char8 as BS
import Data.List

readInt = fst . fromJust . BS.readInt
readIntList = map readInt . BS.words
getInt = readInt <$> BS.getLine
getIntList = readIntList <$> BS.getLine

main = do
    s <- getLine
    let n = length s
    putStrLn $ if (kaibun s) && (kaibun (take ((n - 1) `div` 2) s)) && (kaibun (drop ((n + 3) `div` 2 - 1) s)) then "Yes" else "No"