#include <bits/stdc++.h>
#define int long long
#define ll long long
#define ull unsigned long long
#define fi first
#define se second
#define endl "\n"
#define ii pair<int,int>
#define all(a) (a).begin(), (a).end()
using namespace std;
const int N = 5e4 + 5;
const int mod = 1e9 + 7;
const int base = 1301;
int binpow(int a, int b){
int res = 1;
while (b){
if (b & 1) res = a * res % mod;
a = a * a % mod;
b = b >> 1;
}
return res;
}
signed main(){
cin.tie(0) -> sync_with_stdio(false);
if (fopen( "input.inp" , "r" )){
freopen( "input.inp" , "r" , stdin );
freopen( "output.out" , "w" , stdout );
}
int hsh1 = 0, hsh2 = 0, cnt_base = 0;
char c;
while (cin >> c){
hsh1 = (hsh1 * base + c - 'a' + 1) % mod;
hsh2 = (hsh2 + (c - 'a' + 1) * binpow(base, cnt_base++)) % mod;
}
if (hsh1 == hsh2) cout << "YES\n";
else cout << "NO\n";
// cout << hsh1 << endl << hsh2 << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHVsbCB1bnNpZ25lZCBsb25nIGxvbmcKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGVuZGwgIlxuIgojZGVmaW5lIGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBhbGwoYSkgKGEpLmJlZ2luKCksIChhKS5lbmQoKQoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBOID0gNWU0ICsgNTsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CmNvbnN0IGludCBiYXNlID0gMTMwMTsKCmludCBiaW5wb3coaW50IGEsIGludCBiKXsKICAgIGludCByZXMgPSAxOwogICAgd2hpbGUgKGIpewogICAgICAgIGlmIChiICYgMSkgcmVzID0gYSAqIHJlcyAlIG1vZDsKICAgICAgICBhID0gYSAqIGEgJSBtb2Q7CiAgICAgICAgYiA9IGIgPj4gMTsKICAgIH0KICAgIHJldHVybiByZXM7Cn0KCnNpZ25lZCBtYWluKCl7CiAgICBjaW4udGllKDApIC0+IHN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CgogICAgaWYgKGZvcGVuKCAiaW5wdXQuaW5wIiAsICJyIiApKXsKICAgICAgICBmcmVvcGVuKCAiaW5wdXQuaW5wIiAsICJyIiAsIHN0ZGluICk7CiAgICAgICAgZnJlb3BlbiggIm91dHB1dC5vdXQiICwgInciICwgc3Rkb3V0ICk7CiAgICB9CgogICAgaW50IGhzaDEgPSAwLCBoc2gyID0gMCwgY250X2Jhc2UgPSAwOwoKICAgIGNoYXIgYzsKCiAgICB3aGlsZSAoY2luID4+IGMpewogICAgICAgIGhzaDEgPSAoaHNoMSAqIGJhc2UgKyBjIC0gJ2EnICsgMSkgJSBtb2Q7CiAgICAgICAgaHNoMiA9IChoc2gyICsgKGMgLSAnYScgKyAxKSAqIGJpbnBvdyhiYXNlLCBjbnRfYmFzZSsrKSkgJSBtb2Q7CiAgICB9CgogICAgaWYgKGhzaDEgPT0gaHNoMikgY291dCA8PCAiWUVTXG4iOwogICAgZWxzZSBjb3V0IDw8ICJOT1xuIjsKCi8vICAgIGNvdXQgPDwgaHNoMSA8PCBlbmRsIDw8IGhzaDIgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=