import std.stdio;
import std.string;

bool isK(C)(C[] a) {
	if (a.length <= 1) return true;
	
	size_t l = 0, r = a.length - 1;

	while (l < r) {
		if (a[l] != a[r]) {
			return false;
		}
		++l;
		--r;
	}

	return true;
}

void main() {
	auto s = readln.chomp;

	if (s.isK && s[0.. $ / 2].isK && s[$ / 2 + 1..$].isK) {
		writeln("Yes");
	} else {
		writeln("No");
	}
}
