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