Problem:
Score : 200 points

Problem Statement

A string S of an odd length is said to be a strong palindrome if and only if all of the following conditions are satisfied:

S is a palindrome.

Let N be the length of S. The string formed by the 1-st through ((N-1)/2)-th characters of S is a palindrome.

The string consisting of the (N+3)/2-st through N-th characters of S is a palindrome.

Determine whether S is a strong palindrome.

Constraints

S consists of lowercase English letters.

The length of S is an odd number between 3 and 99 (inclusive).

Input

Input is given from Standard Input in the following format:

S

Output

If S is a strong palindrome, print Yes;
otherwise, print No.

Sample Input 1

akasaka

Sample Output 1

Yes

S is akasaka.

The string formed by the 1-st through the 3-rd characters is aka.

The string formed by the 5-th through the 7-th characters is aka.
All of these are palindromes, so S is a strong palindrome.

Sample Input 2

level

Sample Output 2

No

Sample Input 3

atcoder

Sample Output 3

No

Solution in C# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using static System.Console;
using static System.Math;

namespace Main
{
    class mymath
    {
        public bool isreversible(char[] a)
        {
            int M = a.Length;
            bool r = true;
            for (int i = 0; i < M / 2; i++)
            {
                if (a[i] != a[M - i - 1])
                {
                    r = false;
                }
            }
            return r;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            char[] S = ReadLine().ToCharArray();
            int N = S.Length;
            int M = (N - 1) / 2;
            int L = (N + 3) / 2;
            char[] S2 = new char[M];
            char[] S3 = new char[N - L + 1];
            Array.Copy(S, 0, S2, 0, M );
            Array.Copy(S, L - 1, S3, 0, N - L + 1);
            var mm = new mymath();

            if(mm.isreversible(S) && mm.isreversible(S2) && mm.isreversible(S3))
            {
                WriteLine("Yes");
            }
            else
            {
                //WriteLine(string.Join("",S2));
                //WriteLine(string.Join("", S3));
                WriteLine("No");
            }
        }
    }
}