fun String.zenhan() = substring(0, length / 2)
fun String.kouhan() = substring((length / 2) + 1)
fun String.isKaibun(): Boolean {
    val center = length / 2
    return if (length % 2 != 0) {
        substring(0, center) == substring(center + 1).reversed()
    } else {
        substring(0, center) == substring(center).reversed()
    }
}
fun main(args: Array<String>) {
    val input = readLine()!!
    if (input.isKaibun() && input.zenhan().isKaibun() && input.kouhan().isKaibun()) {
        "Yes"
    } else {
        "No"
    }.let { println(it) }
}
