import java.util.Scanner;

public class Main 
{

	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		
		String s = 		sc.next();
		
		String firstCheck = s.substring(0,(s.length()-1)/2);
		//System.out.println("firstCheck is: "+firstCheck);
		
		String seconCheck = s.substring((s.length()+3)/2 - 1, s.length());
		//System.out.println("seconCheck is: "+seconCheck);
		
		if(checkPalindrome(s) && checkPalindrome(firstCheck) && checkPalindrome(seconCheck))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
		
		
		
		

	}
	
	public static boolean checkPalindrome(String a)
	{
		String b = "";
		
		for(int i=a.length()-1; i>=0; i-- )
		{
			b += a.charAt(i);
		}
		
		//System.out.println("a is: "+a);
		//System.out.println("b is: "+b);
		
		if(a.equals(b))
		{
			return true;
		}
		
		return false;
	}

} import java.util.Scanner; Scanner java.util public class Main 
{

	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		
		String s = 		sc.next();
		
		String firstCheck = s.substring(0,(s.length()-1)/2);
		//System.out.println("firstCheck is: "+firstCheck);
		
		String seconCheck = s.substring((s.length()+3)/2 - 1, s.length());
		//System.out.println("seconCheck is: "+seconCheck);
		
		if(checkPalindrome(s) && checkPalindrome(firstCheck) && checkPalindrome(seconCheck))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
		
		
		
		

	}
	
	public static boolean checkPalindrome(String a)
	{
		String b = "";
		
		for(int i=a.length()-1; i>=0; i-- )
		{
			b += a.charAt(i);
		}
		
		//System.out.println("a is: "+a);
		//System.out.println("b is: "+b);
		
		if(a.equals(b))
		{
			return true;
		}
		
		return false;
	}

} Main public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		
		String s = 		sc.next();
		
		String firstCheck = s.substring(0,(s.length()-1)/2);
		//System.out.println("firstCheck is: "+firstCheck);
		
		String seconCheck = s.substring((s.length()+3)/2 - 1, s.length());
		//System.out.println("seconCheck is: "+seconCheck);
		
		if(checkPalindrome(s) && checkPalindrome(firstCheck) && checkPalindrome(seconCheck))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
		
		
		
		

	} main {
		Scanner sc = new Scanner(System.in);
		
		String s = 		sc.next();
		
		String firstCheck = s.substring(0,(s.length()-1)/2);
		//System.out.println("firstCheck is: "+firstCheck);
		
		String seconCheck = s.substring((s.length()+3)/2 - 1, s.length());
		//System.out.println("seconCheck is: "+seconCheck);
		
		if(checkPalindrome(s) && checkPalindrome(firstCheck) && checkPalindrome(seconCheck))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
		
		
		
		

	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String s = 		sc.next(); s sc.next() sc.next sc String firstCheck = s.substring(0,(s.length()-1)/2); firstCheck s.substring(0,(s.length()-1)/2) s.substring s 0 (s.length()-1)/2 (s.length()-1) s.length() s.length s 1 2 String seconCheck = s.substring((s.length()+3)/2 - 1, s.length()); seconCheck s.substring((s.length()+3)/2 - 1, s.length()) s.substring s (s.length()+3)/2 - 1 (s.length()+3)/2 (s.length()+3) s.length() s.length s 3 2 1 s.length() s.length s if(checkPalindrome(s) && checkPalindrome(firstCheck) && checkPalindrome(seconCheck))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		} checkPalindrome(s) && checkPalindrome(firstCheck) && checkPalindrome(seconCheck) checkPalindrome(s) && checkPalindrome(firstCheck) && checkPalindrome(seconCheck) checkPalindrome(s) checkPalindrome s checkPalindrome(firstCheck) checkPalindrome firstCheck checkPalindrome(seconCheck) checkPalindrome seconCheck {
			System.out.println("Yes");
		} System.out.println("Yes") System.out.println System.out System System.out "Yes" {
			System.out.println("No");
		} System.out.println("No") System.out.println System.out System System.out "No" String[] args args public static boolean checkPalindrome(String a)
	{
		String b = "";
		
		for(int i=a.length()-1; i>=0; i-- )
		{
			b += a.charAt(i);
		}
		
		//System.out.println("a is: "+a);
		//System.out.println("b is: "+b);
		
		if(a.equals(b))
		{
			return true;
		}
		
		return false;
	} checkPalindrome {
		String b = "";
		
		for(int i=a.length()-1; i>=0; i-- )
		{
			b += a.charAt(i);
		}
		
		//System.out.println("a is: "+a);
		//System.out.println("b is: "+b);
		
		if(a.equals(b))
		{
			return true;
		}
		
		return false;
	} String b = ""; b "" for(int i=a.length()-1; i>=0; i-- )
		{
			b += a.charAt(i);
		} int i=a.length()-1; int i=a.length()-1; i a.length()-1 a.length() a.length a 1 i>=0 i 0 i-- i-- i {
			b += a.charAt(i);
		} {
			b += a.charAt(i);
		} b += a.charAt(i) b a.charAt(i) a.charAt a i if(a.equals(b))
		{
			return true;
		} a.equals(b) a.equals a b {
			return true;
		} return true; true return false; false String a a public class Main 
{

	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		
		String s = 		sc.next();
		
		String firstCheck = s.substring(0,(s.length()-1)/2);
		//System.out.println("firstCheck is: "+firstCheck);
		
		String seconCheck = s.substring((s.length()+3)/2 - 1, s.length());
		//System.out.println("seconCheck is: "+seconCheck);
		
		if(checkPalindrome(s) && checkPalindrome(firstCheck) && checkPalindrome(seconCheck))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
		
		
		
		

	}
	
	public static boolean checkPalindrome(String a)
	{
		String b = "";
		
		for(int i=a.length()-1; i>=0; i-- )
		{
			b += a.charAt(i);
		}
		
		//System.out.println("a is: "+a);
		//System.out.println("b is: "+b);
		
		if(a.equals(b))
		{
			return true;
		}
		
		return false;
	}

} public class Main 
{

	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		
		String s = 		sc.next();
		
		String firstCheck = s.substring(0,(s.length()-1)/2);
		//System.out.println("firstCheck is: "+firstCheck);
		
		String seconCheck = s.substring((s.length()+3)/2 - 1, s.length());
		//System.out.println("seconCheck is: "+seconCheck);
		
		if(checkPalindrome(s) && checkPalindrome(firstCheck) && checkPalindrome(seconCheck))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
		
		
		
		

	}
	
	public static boolean checkPalindrome(String a)
	{
		String b = "";
		
		for(int i=a.length()-1; i>=0; i-- )
		{
			b += a.charAt(i);
		}
		
		//System.out.println("a is: "+a);
		//System.out.println("b is: "+b);
		
		if(a.equals(b))
		{
			return true;
		}
		
		return false;
	}

} Main
import java.util.Scanner;

public class Main 
{

	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		
		String s = 		sc.next();
		
		String firstCheck = s.substring(0,(s.length()-1)/2);
		//System.out.println("firstCheck is: "+firstCheck);
		
		String seconCheck = s.substring((s.length()+3)/2 - 1, s.length());
		//System.out.println("seconCheck is: "+seconCheck);
		
		if(checkPalindrome(s) && checkPalindrome(firstCheck) && checkPalindrome(seconCheck))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
		
		
		
		

	}
	
	public static boolean checkPalindrome(String a)
	{
		String b = "";
		
		for(int i=a.length()-1; i>=0; i-- )
		{
			b += a.charAt(i);
		}
		
		//System.out.println("a is: "+a);
		//System.out.println("b is: "+b);
		
		if(a.equals(b))
		{
			return true;
		}
		
		return false;
	}

}
