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.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AtCoder_solve
{
    class Program
    {
        public const ulong mod = 1000000007;

        static void Main(string[] args)

        {

            var s = Console.ReadLine();
            var key = true;
            var ans = "";

            for(int i = 0; i < s.Length/2; i++)
            {
                if (s[i] != s[s.Length - 1 - i])
                {
                    //Console.WriteLine("n1 " + i);
                    key = false;
                }
            }

            for (int i = 0; i < (s.Length-1) / 4; i++)
            {
                if (s[i] != s[(s.Length - 1) / 2 - 1-i])
                {
                    //Console.WriteLine("n2 " + i);
                    key = false;
                }
            }

            for (int i = (s.Length+1)/2; i < s.Length; i++)
            {
                if (s[i] != s[s.Length - 1 - i])
                {
                   // Console.WriteLine("n3 " + i);
                    key = false;
                }
            }

            if (key) ans = "Yes";
            else ans = "No";

                Console.WriteLine(ans);




        }

       
        static public long Input()
        {
            return long.Parse(Console.ReadLine());
        }

        static public string[] Input2()
        {
            return Console.ReadLine().Split();
        }

        static public ulong[] Input3()
        {
            string[] data = Console.ReadLine().Split();
            ulong[] res = new ulong[data.LongLength];
            for(long i = 0; i < data.LongLength; i++)
            {
                res[i] = ulong.Parse(data[i]);
            }
            return res;
        }
        public static long Choose(long n, long a)
        {
            long x = 1;
            long y = 1;
            for (long i = 0; i < a; i++)
            {
                x *= n - i;
                y *= i + 1;
            }
            return x / y;
        }
    }
}