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 Java8 (OpenJDK 1.8.0) (judge verdict: Accepted)

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		//List<String> list=new ArrayList<String>(Arrays.asList(s.split("")));
		//List<Integer> list=new ArrayList<Integer>();
		//int[][] array = new int[3][3];
		String s = sc.next();
		List<String> list=new ArrayList<String>(Arrays.asList(s.split("")));
		List<String> list_reverse=new ArrayList<String>(Arrays.asList(s.split("")));
		Collections.reverse(list_reverse);
		int a = (list.size()-1)/2;
		if(list.equals(list_reverse)) {
			List<String> list_mae=new ArrayList<String>();
			List<String> list_mae_re=new ArrayList<String>();
			for(int i=0;a>i;i++) {
				list_mae.add(list.get(i));
				list_mae_re.add(list.get(i));
			}
			Collections.reverse(list_mae_re);
			if(list_mae.equals(list_mae_re)) {
				List<String> list_ato=new ArrayList<String>();
				List<String> list_ato_re=new ArrayList<String>();
				for(int j=0;a>j;j++) {
					list_ato.add(list_reverse.get(j));
					list_ato_re.add(list_reverse.get(j));
				}
				Collections.reverse(list_ato_re);
				if(list_ato.equals(list_ato_re)) {
					System.out.println("Yes");
				}
				else {
					System.out.println("No");
				}

			}
			else {
				System.out.println("No");
			}

		}
		else {
			System.out.println("No");
		}
	}
}