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

#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <map>
#include <string>
#include <queue>
#include <stack>
#include <math.h>
#include <cmath>
#include <numeric>
#include <iomanip>

#define log(x) cout << x << endl
#define pb push_back
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define all(x) (x).begin(), (x).end()
typedef long long lint;
using namespace std;

// <<fixed<<setprecision(6)<<

int gcd(lint x, lint y)
{
    return y == 0 ? x : gcd(y, x % y);
}

int main()
{
    string s, a, b;
    int l, l2;
    bool isyes = true;
    cin >> s;
    l = s.size();
    a = s.substr(0, (l - 1) / 2);
    b = s.substr(((l + 3) / 2) - 1);
    for (int i = 0; i < l / 2; i++)
    {
        if (s[i] != s[l - 1 - i])
        {
            isyes = false;
            break;
        }
    }

    if (isyes)
    {
        l = a.size();
        for (int i = 0; i < l / 2; i++)
        {
            if (a[i] != a[l - 1 - i])
            {
                isyes = false;
                break;
            }
        }
        for (int i = 0; i < l / 2; i++)
        {
            if (b[i] != b[l - 1 - i])
            {
                isyes = false;
                break;
            }
        }
    }
    if(isyes){
        cout<<"Yes";
    }
    else{
        cout<<"No";
    }
}