main = do
  s <- getLine
  let ans = compute s
  putStrLn (if ans then "Yes" else "No")

compute :: String -> Bool
compute s = p s && p s1 && p s2
  where
    l = length s
    s1 = take (l `div` 2) s
    s2 = drop (pred ((l + 3) `div` 2)) s

p :: String -> Bool
p s = reverse s == s
