import java.io.*;
import java.util.*;

public class Main
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		String s = in.next();
		if(isPalindrome(s) && isPalindrome(s.substring(0, (s.length() - 1) / 2)) && isPalindrome(s.substring((s.length() + 3) / 2 - 1)))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
	}
	
	public static boolean isPalindrome(String s)
	{
		for(int i = 0; i < s.length(); ++i)
		{
			if(s.charAt(i) != s.charAt(s.length() - 1 - i))
			{
				return false;
			}
		}
		return true;
	}
} import java.io.*; io.* java import java.util.*; util.* java public class Main
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		String s = in.next();
		if(isPalindrome(s) && isPalindrome(s.substring(0, (s.length() - 1) / 2)) && isPalindrome(s.substring((s.length() + 3) / 2 - 1)))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
	}
	
	public static boolean isPalindrome(String s)
	{
		for(int i = 0; i < s.length(); ++i)
		{
			if(s.charAt(i) != s.charAt(s.length() - 1 - i))
			{
				return false;
			}
		}
		return true;
	}
} Main public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		String s = in.next();
		if(isPalindrome(s) && isPalindrome(s.substring(0, (s.length() - 1) / 2)) && isPalindrome(s.substring((s.length() + 3) / 2 - 1)))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
	} main {
		Scanner in = new Scanner(System.in);
		String s = in.next();
		if(isPalindrome(s) && isPalindrome(s.substring(0, (s.length() - 1) / 2)) && isPalindrome(s.substring((s.length() + 3) / 2 - 1)))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
	} Scanner in = new Scanner(System.in); in new Scanner(System.in) String s = in.next(); s in.next() in.next in if(isPalindrome(s) && isPalindrome(s.substring(0, (s.length() - 1) / 2)) && isPalindrome(s.substring((s.length() + 3) / 2 - 1)))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		} isPalindrome(s) && isPalindrome(s.substring(0, (s.length() - 1) / 2)) && isPalindrome(s.substring((s.length() + 3) / 2 - 1)) isPalindrome(s) && isPalindrome(s.substring(0, (s.length() - 1) / 2)) && isPalindrome(s.substring((s.length() + 3) / 2 - 1)) isPalindrome(s) isPalindrome s isPalindrome(s.substring(0, (s.length() - 1) / 2)) isPalindrome 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 isPalindrome(s.substring((s.length() + 3) / 2 - 1)) isPalindrome s.substring((s.length() + 3) / 2 - 1) s.substring s (s.length() + 3) / 2 - 1 (s.length() + 3) / 2 (s.length() + 3) s.length() s.length s 3 2 1 {
			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 isPalindrome(String s)
	{
		for(int i = 0; i < s.length(); ++i)
		{
			if(s.charAt(i) != s.charAt(s.length() - 1 - i))
			{
				return false;
			}
		}
		return true;
	} isPalindrome {
		for(int i = 0; i < s.length(); ++i)
		{
			if(s.charAt(i) != s.charAt(s.length() - 1 - i))
			{
				return false;
			}
		}
		return true;
	} for(int i = 0; i < s.length(); ++i)
		{
			if(s.charAt(i) != s.charAt(s.length() - 1 - i))
			{
				return false;
			}
		} int i = 0; int i = 0; i 0 i < s.length() i s.length() s.length s ++i ++i i {
			if(s.charAt(i) != s.charAt(s.length() - 1 - i))
			{
				return false;
			}
		} {
			if(s.charAt(i) != s.charAt(s.length() - 1 - i))
			{
				return false;
			}
		} if(s.charAt(i) != s.charAt(s.length() - 1 - i))
			{
				return false;
			} s.charAt(i) != s.charAt(s.length() - 1 - i) s.charAt(i) s.charAt s i s.charAt(s.length() - 1 - i) s.charAt s s.length() - 1 - i s.length() - 1 - i s.length() s.length s 1 i {
				return false;
			} return false; false return true; true String s s public class Main
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		String s = in.next();
		if(isPalindrome(s) && isPalindrome(s.substring(0, (s.length() - 1) / 2)) && isPalindrome(s.substring((s.length() + 3) / 2 - 1)))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
	}
	
	public static boolean isPalindrome(String s)
	{
		for(int i = 0; i < s.length(); ++i)
		{
			if(s.charAt(i) != s.charAt(s.length() - 1 - i))
			{
				return false;
			}
		}
		return true;
	}
} public class Main
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		String s = in.next();
		if(isPalindrome(s) && isPalindrome(s.substring(0, (s.length() - 1) / 2)) && isPalindrome(s.substring((s.length() + 3) / 2 - 1)))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
	}
	
	public static boolean isPalindrome(String s)
	{
		for(int i = 0; i < s.length(); ++i)
		{
			if(s.charAt(i) != s.charAt(s.length() - 1 - i))
			{
				return false;
			}
		}
		return true;
	}
} Main
import java.io.*;
import java.util.*;

public class Main
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		String s = in.next();
		if(isPalindrome(s) && isPalindrome(s.substring(0, (s.length() - 1) / 2)) && isPalindrome(s.substring((s.length() + 3) / 2 - 1)))
		{
			System.out.println("Yes");
		}
		else
		{
			System.out.println("No");
		}
	}
	
	public static boolean isPalindrome(String s)
	{
		for(int i = 0; i < s.length(); ++i)
		{
			if(s.charAt(i) != s.charAt(s.length() - 1 - i))
			{
				return false;
			}
		}
		return true;
	}
}
