import java.io.PrintWriter;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
//		executeA();
		executeB();
	}

	private static void executeA() {

		Scanner sc = new Scanner(System.in);

		String s1 = sc.nextLine();
		String[] s1Array = s1.split(" ");

		try {
			int n = Integer.parseInt(s1Array[0]);
			int m = Integer.parseInt(s1Array[1]);

			int count = (n*(n-1) + m*(m-1))/2;
			PrintWriter pw = new PrintWriter(System.out);
			pw.println(count);
			pw.flush();
			pw.close();
		} catch (NumberFormatException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}

	private static void executeB() {
		Scanner in = new Scanner(System.in);
		String s1 = in.nextLine();

		int result = 1;
		int len = s1.length();
		int halflen = (len-1)/2;

		for(int i=0;i<halflen;i++) {
			if(s1.charAt(i) != s1.charAt(len-1-i)){
				result = -1;
				break;
			}
		}

		if( result == 1) {
			for(int i=0;i<halflen/2;i++) {
				if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				}
				if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				}
			}
		}

		PrintWriter pw = new PrintWriter(System.out);
		pw.println( result == 1 ? "Yes" : "No" );
		pw.flush();
		pw.close();
	}

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

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
//		executeA();
		executeB();
	}

	private static void executeA() {

		Scanner sc = new Scanner(System.in);

		String s1 = sc.nextLine();
		String[] s1Array = s1.split(" ");

		try {
			int n = Integer.parseInt(s1Array[0]);
			int m = Integer.parseInt(s1Array[1]);

			int count = (n*(n-1) + m*(m-1))/2;
			PrintWriter pw = new PrintWriter(System.out);
			pw.println(count);
			pw.flush();
			pw.close();
		} catch (NumberFormatException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}

	private static void executeB() {
		Scanner in = new Scanner(System.in);
		String s1 = in.nextLine();

		int result = 1;
		int len = s1.length();
		int halflen = (len-1)/2;

		for(int i=0;i<halflen;i++) {
			if(s1.charAt(i) != s1.charAt(len-1-i)){
				result = -1;
				break;
			}
		}

		if( result == 1) {
			for(int i=0;i<halflen/2;i++) {
				if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				}
				if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				}
			}
		}

		PrintWriter pw = new PrintWriter(System.out);
		pw.println( result == 1 ? "Yes" : "No" );
		pw.flush();
		pw.close();
	}

} Main public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
//		executeA();
		executeB();
	} main {
		// TODO 自動生成されたメソッド・スタブ
//		executeA();
		executeB();
	} executeB() executeB String[] args args private static void executeA() {

		Scanner sc = new Scanner(System.in);

		String s1 = sc.nextLine();
		String[] s1Array = s1.split(" ");

		try {
			int n = Integer.parseInt(s1Array[0]);
			int m = Integer.parseInt(s1Array[1]);

			int count = (n*(n-1) + m*(m-1))/2;
			PrintWriter pw = new PrintWriter(System.out);
			pw.println(count);
			pw.flush();
			pw.close();
		} catch (NumberFormatException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	} executeA {

		Scanner sc = new Scanner(System.in);

		String s1 = sc.nextLine();
		String[] s1Array = s1.split(" ");

		try {
			int n = Integer.parseInt(s1Array[0]);
			int m = Integer.parseInt(s1Array[1]);

			int count = (n*(n-1) + m*(m-1))/2;
			PrintWriter pw = new PrintWriter(System.out);
			pw.println(count);
			pw.flush();
			pw.close();
		} catch (NumberFormatException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) String s1 = sc.nextLine(); s1 sc.nextLine() sc.nextLine sc String[] s1Array = s1.split(" "); s1Array s1.split(" ") s1.split s1 " " try {
			int n = Integer.parseInt(s1Array[0]);
			int m = Integer.parseInt(s1Array[1]);

			int count = (n*(n-1) + m*(m-1))/2;
			PrintWriter pw = new PrintWriter(System.out);
			pw.println(count);
			pw.flush();
			pw.close();
		} catch (NumberFormatException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		} catch (NumberFormatException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		} NumberFormatException e {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		} e.printStackTrace() e.printStackTrace e {
			int n = Integer.parseInt(s1Array[0]);
			int m = Integer.parseInt(s1Array[1]);

			int count = (n*(n-1) + m*(m-1))/2;
			PrintWriter pw = new PrintWriter(System.out);
			pw.println(count);
			pw.flush();
			pw.close();
		} int n = Integer.parseInt(s1Array[0]); n Integer.parseInt(s1Array[0]) Integer.parseInt Integer s1Array[0] s1Array 0 int m = Integer.parseInt(s1Array[1]); m Integer.parseInt(s1Array[1]) Integer.parseInt Integer s1Array[1] s1Array 1 int count = (n*(n-1) + m*(m-1))/2; count (n*(n-1) + m*(m-1))/2 (n*(n-1) + m*(m-1)) n*(n-1) n (n-1) n 1 m*(m-1) m (m-1) m 1 2 PrintWriter pw = new PrintWriter(System.out); pw new PrintWriter(System.out) pw.println(count) pw.println pw count pw.flush() pw.flush pw pw.close() pw.close pw private static void executeB() {
		Scanner in = new Scanner(System.in);
		String s1 = in.nextLine();

		int result = 1;
		int len = s1.length();
		int halflen = (len-1)/2;

		for(int i=0;i<halflen;i++) {
			if(s1.charAt(i) != s1.charAt(len-1-i)){
				result = -1;
				break;
			}
		}

		if( result == 1) {
			for(int i=0;i<halflen/2;i++) {
				if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				}
				if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				}
			}
		}

		PrintWriter pw = new PrintWriter(System.out);
		pw.println( result == 1 ? "Yes" : "No" );
		pw.flush();
		pw.close();
	} executeB {
		Scanner in = new Scanner(System.in);
		String s1 = in.nextLine();

		int result = 1;
		int len = s1.length();
		int halflen = (len-1)/2;

		for(int i=0;i<halflen;i++) {
			if(s1.charAt(i) != s1.charAt(len-1-i)){
				result = -1;
				break;
			}
		}

		if( result == 1) {
			for(int i=0;i<halflen/2;i++) {
				if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				}
				if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				}
			}
		}

		PrintWriter pw = new PrintWriter(System.out);
		pw.println( result == 1 ? "Yes" : "No" );
		pw.flush();
		pw.close();
	} Scanner in = new Scanner(System.in); in new Scanner(System.in) String s1 = in.nextLine(); s1 in.nextLine() in.nextLine in int result = 1; result 1 int len = s1.length(); len s1.length() s1.length s1 int halflen = (len-1)/2; halflen (len-1)/2 (len-1) len 1 2 for(int i=0;i<halflen;i++) {
			if(s1.charAt(i) != s1.charAt(len-1-i)){
				result = -1;
				break;
			}
		} int i=0; int i=0; i 0 i<halflen i halflen i++ i++ i {
			if(s1.charAt(i) != s1.charAt(len-1-i)){
				result = -1;
				break;
			}
		} {
			if(s1.charAt(i) != s1.charAt(len-1-i)){
				result = -1;
				break;
			}
		} if(s1.charAt(i) != s1.charAt(len-1-i)){
				result = -1;
				break;
			} s1.charAt(i) != s1.charAt(len-1-i) s1.charAt(i) s1.charAt s1 i s1.charAt(len-1-i) s1.charAt s1 len-1-i len-1-i len 1 i {
				result = -1;
				break;
			} result = -1 result -1 1 break; if( result == 1) {
			for(int i=0;i<halflen/2;i++) {
				if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				}
				if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				}
			}
		} result == 1 result 1 {
			for(int i=0;i<halflen/2;i++) {
				if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				}
				if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				}
			}
		} for(int i=0;i<halflen/2;i++) {
				if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				}
				if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				}
			} int i=0; int i=0; i 0 i<halflen/2 i halflen/2 halflen 2 i++ i++ i {
				if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				}
				if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				}
			} {
				if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				}
				if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				}
			} if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				} s1.charAt(i) != s1.charAt(halflen-1-i) s1.charAt(i) s1.charAt s1 i s1.charAt(halflen-1-i) s1.charAt s1 halflen-1-i halflen-1-i halflen 1 i {
					result = -1;
					break;
				} result = -1 result -1 1 break; if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				} s1.charAt(halflen+1+i) != s1.charAt(len-1-i) s1.charAt(halflen+1+i) s1.charAt s1 halflen+1+i halflen+1+i halflen 1 i s1.charAt(len-1-i) s1.charAt s1 len-1-i len-1-i len 1 i {
					result = -1;
					break;
				} result = -1 result -1 1 break; PrintWriter pw = new PrintWriter(System.out); pw new PrintWriter(System.out) pw.println( result == 1 ? "Yes" : "No" ) pw.println pw result == 1 ? "Yes" : "No" result == 1 result 1 "Yes" "No" pw.flush() pw.flush pw pw.close() pw.close pw public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
//		executeA();
		executeB();
	}

	private static void executeA() {

		Scanner sc = new Scanner(System.in);

		String s1 = sc.nextLine();
		String[] s1Array = s1.split(" ");

		try {
			int n = Integer.parseInt(s1Array[0]);
			int m = Integer.parseInt(s1Array[1]);

			int count = (n*(n-1) + m*(m-1))/2;
			PrintWriter pw = new PrintWriter(System.out);
			pw.println(count);
			pw.flush();
			pw.close();
		} catch (NumberFormatException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}

	private static void executeB() {
		Scanner in = new Scanner(System.in);
		String s1 = in.nextLine();

		int result = 1;
		int len = s1.length();
		int halflen = (len-1)/2;

		for(int i=0;i<halflen;i++) {
			if(s1.charAt(i) != s1.charAt(len-1-i)){
				result = -1;
				break;
			}
		}

		if( result == 1) {
			for(int i=0;i<halflen/2;i++) {
				if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				}
				if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				}
			}
		}

		PrintWriter pw = new PrintWriter(System.out);
		pw.println( result == 1 ? "Yes" : "No" );
		pw.flush();
		pw.close();
	}

} public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
//		executeA();
		executeB();
	}

	private static void executeA() {

		Scanner sc = new Scanner(System.in);

		String s1 = sc.nextLine();
		String[] s1Array = s1.split(" ");

		try {
			int n = Integer.parseInt(s1Array[0]);
			int m = Integer.parseInt(s1Array[1]);

			int count = (n*(n-1) + m*(m-1))/2;
			PrintWriter pw = new PrintWriter(System.out);
			pw.println(count);
			pw.flush();
			pw.close();
		} catch (NumberFormatException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}

	private static void executeB() {
		Scanner in = new Scanner(System.in);
		String s1 = in.nextLine();

		int result = 1;
		int len = s1.length();
		int halflen = (len-1)/2;

		for(int i=0;i<halflen;i++) {
			if(s1.charAt(i) != s1.charAt(len-1-i)){
				result = -1;
				break;
			}
		}

		if( result == 1) {
			for(int i=0;i<halflen/2;i++) {
				if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				}
				if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				}
			}
		}

		PrintWriter pw = new PrintWriter(System.out);
		pw.println( result == 1 ? "Yes" : "No" );
		pw.flush();
		pw.close();
	}

} Main
import java.io.PrintWriter;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO 自動生成されたメソッド・スタブ
//		executeA();
		executeB();
	}

	private static void executeA() {

		Scanner sc = new Scanner(System.in);

		String s1 = sc.nextLine();
		String[] s1Array = s1.split(" ");

		try {
			int n = Integer.parseInt(s1Array[0]);
			int m = Integer.parseInt(s1Array[1]);

			int count = (n*(n-1) + m*(m-1))/2;
			PrintWriter pw = new PrintWriter(System.out);
			pw.println(count);
			pw.flush();
			pw.close();
		} catch (NumberFormatException e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}

	private static void executeB() {
		Scanner in = new Scanner(System.in);
		String s1 = in.nextLine();

		int result = 1;
		int len = s1.length();
		int halflen = (len-1)/2;

		for(int i=0;i<halflen;i++) {
			if(s1.charAt(i) != s1.charAt(len-1-i)){
				result = -1;
				break;
			}
		}

		if( result == 1) {
			for(int i=0;i<halflen/2;i++) {
				if(s1.charAt(i) != s1.charAt(halflen-1-i)){
					result = -1;
					break;
				}
				if(s1.charAt(halflen+1+i) != s1.charAt(len-1-i)){
					result = -1;
					break;
				}
			}
		}

		PrintWriter pw = new PrintWriter(System.out);
		pw.println( result == 1 ? "Yes" : "No" );
		pw.flush();
		pw.close();
	}

}
