import std;

auto input()
{
    return readln().chomp();
}

alias sread = () => readln.chomp();
alias aryread(T = long) = () => readln.split.to!(T[]);

void main()
{
    string s;
    s = input();
    // writeln(s);
    // writeln(s[0 .. (s.length - 1) / 2]);
    // writeln(s[((s.length + 3) / 2) - 1 .. $]);
    if (s[0 .. (s.length - 1) / 2] == s[((s.length + 3) / 2) - 1 .. $])
    {
        writeln("Yes");
    }
    else
    {
        writeln("No");
    }

}

void scan(L...)(ref L A)
{
    auto l = readln.split;
    foreach (i, T; L)
    {
        A[i] = l[i].to!T;
    }
}
