use std::io::*; use std::str::FromStr; //use std::num; //use std::cmp; //use std::collections::VecDeque; fn main() { let mut s: Vec = read_array(); let mut flag = 0; if s.len() % 2 == 0 { for _i in 0..s.len() / 2 { if s[_i] == s[s.len() / 2 + _i] { flag = 1; } } } if flag == 0 { print!("NO"); } else { print!("YES"); } } pub fn my_floor(x: f64) -> f64 { let rounded = (x * 1000.0).floor() / 1000.0; rounded } pub fn upper_lower(x: char) -> char { let result: char; if x.is_uppercase() { result = x.to_ascii_lowercase(); } else if x.is_lowercase() { result = x.to_ascii_uppercase(); } else { result = x; } result } pub fn max_2(x: usize, y: usize) -> usize { let result; if x >= y { result = x; } else { result = y; } result } pub fn max_3(x: isize, y: isize, z: isize) -> isize { let result; if x >= y && y >= z { result = x; } else if x >= z && z >= y { result = x; } else if y >= x && x >= z { result = y; } else if y >= z && z >= x { result = y; } else if z >= x && x >= y { result = z; } else { result = z; } result } pub fn min_3(x: isize, y: isize, z: isize) -> isize { let result; if x <= y && y <= z { result = x; } else if x <= z && z <= y { result = x; } else if y <= x && x <= z { result = y; } else if y <= z && z <= x { result = y; } else if z <= x && x <= y { result = z; } else { result = z; } result } pub fn read_line() -> String { let mut s: String = String::new(); std::io::stdin().read_line(&mut s).ok(); s } pub fn read() -> T { let stdin = stdin(); let stdin = stdin.lock(); let token: String = stdin .bytes() .map(|c| c.expect("failed to read char") as char) .skip_while(|c| c.is_whitespace()) .take_while(|c| !c.is_whitespace()) .collect(); token.parse().ok().expect("failed to parse token") } pub fn read_array() -> Vec { let array: String = read(); let chars: Vec = array.trim().chars().collect::>(); chars } pub fn get_data() -> Vec { let mut s: String = String::new(); std::io::stdin().read_line(&mut s).ok(); let vec: Vec = s .trim() .split_whitespace() .map(|e| e.parse().ok().unwrap()) .collect(); vec } pub fn get_chars() -> Vec { let mut s: String = String::new(); std::io::stdin().read_line(&mut s).ok(); let vec: Vec = s.trim().chars().collect::>(); vec }