import qualified Data.ByteString.Char8 as BS

main = abc159b

abc159b = do
  s <- BS.getLine
  putStrLn $
      let l = BS.length s
       in if cond1 s l && cond2 s l && judge s
          then "Yes"
          else "No"

cond1 :: BS.ByteString -> Int -> Bool
cond1 s n = judge $ BS.take (div (n-1) 2) s

cond2 :: BS.ByteString -> Int -> Bool
cond2 s n = judge $ BS.take (div (n-1) 2) (BS.reverse s)

judge :: BS.ByteString -> Bool
judge s = s == BS.reverse s