use proconio::input;

fn is_palindrome(s: String) -> bool {
  let r: String = s.chars().rev().collect();
  return s == r;
}
fn is_string_palindrome(s: String) -> bool {
  let n = s.len();
  is_palindrome((&s[0..n]).to_string()) &&
  is_palindrome((&s[..(n-1)/2]).to_string()) &&
  is_palindrome((&s[(n+3)/2+1..n]).to_string())
}

fn main() {
  input! {
    s: String,
  }
  if is_string_palindrome(s) {
    println!("Yes");
  } else {
    println!("No");
  }
}