import qualified Data.ByteString.Char8 as B

main :: IO ()
main = do
  s <- B.getLine
  putStrLn $ if solve s then "Yes" else "No"

solve :: B.ByteString -> Bool
solve s
  | s  /= B.reverse s  = False
  | s1 /= B.reverse s1 = False
  | s2 /= B.reverse s2 = False
  | otherwise          = True
  where
    n = B.length s
    s1 = B.take ((n - 1) `div` 2) s
    s2 = B.drop ((n + 1) `div` 2) s
