fun main(args: Array<String>) = ABC159B.main()

object ABC159B {
    fun readInt() = readLine()!!.toInt()
    fun readInts() = readLine()!!.split(" ").map { it.toInt() }

    fun main() {
        val S = readLine()!!
        val result = S.isKaibun() && S.cond2() && S.cond3()
        println(if (result) "Yes" else "No")
    }

    fun String.isKaibun(): Boolean = this == this.reversed()

    fun String.cond2(): Boolean {
        val N = this.length
        val sub = this.take((N - 1) / 2)
        return sub.isKaibun()
    }

    fun String.cond3(): Boolean {
        val N = this.length
        val sub = this.drop((N + 3) / 2 - 1)
        return sub.isKaibun()
    }
}