var c = inp => { console.log(inp) };
var is_kaibun = s => {
    var ln = s.length;
    var ans = true;
    for (var i = 0, l = (ln - 1) / 2; i < l; i++) {
        // console.log(s[i])
        // console.log(s[ln - i - 1])
        if (s[i] != s[ln - i - 1]) {
            ans = false;
            break;
        }
    }
    return ans;
}
var s = require("fs").readFileSync("/dev/stdin", "utf8").slice(0, -1)
var ln = s.length;
var ans = is_kaibun(s)
    && is_kaibun(s.slice(0, (ln - 1) / 2))
    && is_kaibun(s.slice((ln + 1) / 2), ln);
console.log(ans ? "Yes" : "No");