/*package whatever //do not write package name here */

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

class Main {
    static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
  
    static boolean is_palindrome(String s){
        for (int i=0;i<=s.length()/2 ;i++ ) {
            if(s.charAt(i)!=s.charAt(s.length()-1-i)){
                return false;
            }
        }
        return true;
    }
	public static void main (String[] args) {
	    FastReader ob = new FastReader();
	    String s = ob.next();
	    int n = s.length();
	    //System.out.println(is_palindrome(s.substring(0,((n-1)/2))));
	    //System.out.println(is_palindrome(s.substring(((n+3)/2)-1,n)));
	    if(is_palindrome(s) && is_palindrome(s.substring(0,((n-1)/2))) && is_palindrome(s.substring(((n+3)/2)-1,n))){
	        System.out.println("Yes");
	        
	    }
	    else{
	        System.out.println("No");
	    }
	}
} import java.io.*; io.* java import java.util.*; util.* java class Main {
    static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
  
    static boolean is_palindrome(String s){
        for (int i=0;i<=s.length()/2 ;i++ ) {
            if(s.charAt(i)!=s.charAt(s.length()-1-i)){
                return false;
            }
        }
        return true;
    }
	public static void main (String[] args) {
	    FastReader ob = new FastReader();
	    String s = ob.next();
	    int n = s.length();
	    //System.out.println(is_palindrome(s.substring(0,((n-1)/2))));
	    //System.out.println(is_palindrome(s.substring(((n+3)/2)-1,n)));
	    if(is_palindrome(s) && is_palindrome(s.substring(0,((n-1)/2))) && is_palindrome(s.substring(((n+3)/2)-1,n))){
	        System.out.println("Yes");
	        
	    }
	    else{
	        System.out.println("No");
	    }
	}
} Main static boolean is_palindrome(String s){
        for (int i=0;i<=s.length()/2 ;i++ ) {
            if(s.charAt(i)!=s.charAt(s.length()-1-i)){
                return false;
            }
        }
        return true;
    } is_palindrome {
        for (int i=0;i<=s.length()/2 ;i++ ) {
            if(s.charAt(i)!=s.charAt(s.length()-1-i)){
                return false;
            }
        }
        return true;
    } for (int i=0;i<=s.length()/2 ;i++ ) {
            if(s.charAt(i)!=s.charAt(s.length()-1-i)){
                return false;
            }
        } 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)){
                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 static void main (String[] args) {
	    FastReader ob = new FastReader();
	    String s = ob.next();
	    int n = s.length();
	    //System.out.println(is_palindrome(s.substring(0,((n-1)/2))));
	    //System.out.println(is_palindrome(s.substring(((n+3)/2)-1,n)));
	    if(is_palindrome(s) && is_palindrome(s.substring(0,((n-1)/2))) && is_palindrome(s.substring(((n+3)/2)-1,n))){
	        System.out.println("Yes");
	        
	    }
	    else{
	        System.out.println("No");
	    }
	} main {
	    FastReader ob = new FastReader();
	    String s = ob.next();
	    int n = s.length();
	    //System.out.println(is_palindrome(s.substring(0,((n-1)/2))));
	    //System.out.println(is_palindrome(s.substring(((n+3)/2)-1,n)));
	    if(is_palindrome(s) && is_palindrome(s.substring(0,((n-1)/2))) && is_palindrome(s.substring(((n+3)/2)-1,n))){
	        System.out.println("Yes");
	        
	    }
	    else{
	        System.out.println("No");
	    }
	} FastReader ob = new FastReader(); ob new FastReader() String s = ob.next(); s ob.next() ob.next ob int n = s.length(); n s.length() s.length s if(is_palindrome(s) && is_palindrome(s.substring(0,((n-1)/2))) && is_palindrome(s.substring(((n+3)/2)-1,n))){
	        System.out.println("Yes");
	        
	    }
	    else{
	        System.out.println("No");
	    } is_palindrome(s) && is_palindrome(s.substring(0,((n-1)/2))) && is_palindrome(s.substring(((n+3)/2)-1,n)) is_palindrome(s) && is_palindrome(s.substring(0,((n-1)/2))) && is_palindrome(s.substring(((n+3)/2)-1,n)) is_palindrome(s) is_palindrome s is_palindrome(s.substring(0,((n-1)/2))) is_palindrome s.substring(0,((n-1)/2)) s.substring s 0 ((n-1)/2) (n-1) n 1 2 is_palindrome(s.substring(((n+3)/2)-1,n)) is_palindrome s.substring(((n+3)/2)-1,n) s.substring s ((n+3)/2)-1 ((n+3)/2) (n+3) n 3 2 1 n {
	        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 static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } FastReader BufferedReader br; br StringTokenizer st; st public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } FastReader { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } br = new BufferedReader(new
                     InputStreamReader(System.in)) br new BufferedReader(new
                     InputStreamReader(System.in)) String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } next { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } st == null || !st.hasMoreElements() st == null st null !st.hasMoreElements() st.hasMoreElements() st.hasMoreElements st { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } IOException  e { 
                    e.printStackTrace(); 
                } e.printStackTrace() e.printStackTrace e { 
                    st = new StringTokenizer(br.readLine()); 
                } st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } nextInt { 
            return Integer.parseInt(next()); 
        } return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next long nextLong() 
        { 
            return Long.parseLong(next()); 
        } nextLong { 
            return Long.parseLong(next()); 
        } return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } nextDouble { 
            return Double.parseDouble(next()); 
        } return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } nextLine { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } String str = ""; str "" try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } catch (IOException e) 
            { 
                e.printStackTrace(); 
            } IOException e { 
                e.printStackTrace(); 
            } e.printStackTrace() e.printStackTrace e { 
                str = br.readLine(); 
            } str = br.readLine() str br.readLine() br.readLine br return str; str
/*package whatever //do not write package name here */

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

class Main {
    static class FastReader 
    { 
        BufferedReader br; 
        StringTokenizer st; 
  
        public FastReader() 
        { 
            br = new BufferedReader(new
                     InputStreamReader(System.in)); 
        } 
  
        String next() 
        { 
            while (st == null || !st.hasMoreElements()) 
            { 
                try
                { 
                    st = new StringTokenizer(br.readLine()); 
                } 
                catch (IOException  e) 
                { 
                    e.printStackTrace(); 
                } 
            } 
            return st.nextToken(); 
        } 
  
        int nextInt() 
        { 
            return Integer.parseInt(next()); 
        } 
  
        long nextLong() 
        { 
            return Long.parseLong(next()); 
        } 
  
        double nextDouble() 
        { 
            return Double.parseDouble(next()); 
        } 
  
        String nextLine() 
        { 
            String str = ""; 
            try
            { 
                str = br.readLine(); 
            } 
            catch (IOException e) 
            { 
                e.printStackTrace(); 
            } 
            return str; 
        } 
    } 
  
    static boolean is_palindrome(String s){
        for (int i=0;i<=s.length()/2 ;i++ ) {
            if(s.charAt(i)!=s.charAt(s.length()-1-i)){
                return false;
            }
        }
        return true;
    }
	public static void main (String[] args) {
	    FastReader ob = new FastReader();
	    String s = ob.next();
	    int n = s.length();
	    //System.out.println(is_palindrome(s.substring(0,((n-1)/2))));
	    //System.out.println(is_palindrome(s.substring(((n+3)/2)-1,n)));
	    if(is_palindrome(s) && is_palindrome(s.substring(0,((n-1)/2))) && is_palindrome(s.substring(((n+3)/2)-1,n))){
	        System.out.println("Yes");
	        
	    }
	    else{
	        System.out.println("No");
	    }
	}
}