import qualified Data.Text as T
import qualified Data.Text.IO as T
import qualified Data.Text.Read as T

main :: IO ()
main = do
  s <- T.getLine :: IO T.Text
  let
    n = T.length s :: Int
    (pf, sf') = T.splitAt (pred n `div` 2) s
    sf = T.tail sf'
  putStrLn $ if pf == T.reverse pf && sf == pf then "Yes" else "No"

unsafeTextToInt :: T.Text -> Int
unsafeTextToInt s = case T.signed T.decimal s of
  Right (n, _) -> n
