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 (GCC 5.4.1) (judge verdict: Accepted)

#include <stdio.h>
#include <string.h>
char* reverse(char *p,int l)
{ char temp;
    int i;
    for(i=0;i<l/2;i++)
    {
        temp=*(p+i);
        *(p+i)=*(p+l-1-i);
        *(p+l-1-i)=temp;
        
    }
    return(p);
}
int main() {
	char a[100],b[100],c[100],d[100],e[100],f[100];
	scanf("%s",a);
	strcpy(b,a);
	int n=strlen(a);
	reverse(b,n);
	int i;
	for(i=0;i<(n-1)/2;i++)
	c[i]=a[i];
	c[i]='\0';
	strcpy(e,c);
	reverse(e,(n-1)/2);
	
	int j=0;
    for(i=(n+1)/2;i<n;i++)
	{d[j]=a[i];
	j++;}
	d[j]='\0';
	strcpy(f,d);
	reverse(f,(n-1)/2);
	
	if((strcmp(a,b)==0) && (strcmp(c,e)==0) && (strcmp(d,f)==0))
	 printf("Yes");
	else 
	printf("No");
	
	
}