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 JavaScript (node.js v5.12) (judge verdict: Accepted)

function Main(input) {
  "use strict"
  const str = input.split("\n").shift()
  const len = str.length
  function judgePalindrome(str){
    const n = str.length
    let preStr, postStr
    if(n === 1) return true
    else if(n % 2 === 1){
      preStr = str.slice(0, (n - 1) / 2)
      postStr = str.slice((n + 1) / 2, n)
    }else{
      preStr = str.slice(0, n / 2)
      postStr = str.slice(n / 2)
    }
    
    return (preStr === postStr.split("").reverse().join("")) ? preStr : false
  }
  
  const preStr = judgePalindrome(str)
  if(!preStr) console.log("No")
  else{
    if(judgePalindrome(preStr)) console.log("Yes")
    else console.log("No")
  }
}
//*この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require("fs").readFileSync("/dev/stdin", "utf8"));