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 System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace CSharpSample01
{

	class Program
	{
		static void Main(string[] args)
		{
			var inputNum = Console.ReadLine();
			var N = inputNum.Length;

			var flag = true;

			for(int i = 0;i < N / 2;i++)
			{
				if(inputNum[i] != inputNum[N - i - 1])
				{
					flag = false;
					break;
				}
			}

			if(flag)
			{
				var targetNum = N / 2;

				for(int i = 0; i < targetNum / 2; i++)
				{
					if (inputNum[i] != inputNum[targetNum - i - 1])
					{
						flag = false;
						break;
					}
				}
			}

			if (flag)
			{
				var startNum = (N + 3) / 2;

				for (int i = 0; i < N- startNum; i++)
				{
					if (inputNum[startNum -1 + i] != inputNum[N - i - 1])
					{
						flag = false;
						break;
					}
				}
			}

			if(flag)
			{
				Console.WriteLine("Yes");
			}
			else
			{
				Console.WriteLine("No");
			}
		}

	}
}