//高知能系Vtuberの高井茅乃です。
//Twitter: https://twitter.com/takaichino
//YouTube: https://www.youtube.com/channel/UCTOxnI3eOI_o1HRgzq-LEZw

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

#define INF INT_MAX
#define LLINF LLONG_MAX
#define REP(i,n) for(int i=0;i<n;i++)
#define REP1(i,n) for(int i=1;i<=n;i++)
#define MODA 1000000007
#define MODB  998244353 

template <typename T>
std::istream& operator>>(std::istream& is, std::vector<T>& vec) {
    for (T& x: vec) { is >> x; }
    return is;
}



int main() {
	ll ans = 0;
	ll tmp = 0;
	//int n; cin >> n;
	string s;
	cin >> s;
	REP(i, s.size()){
		if(s[i] == '.') break;
		else cout << s[i];
	}
	cout << endl;
}
//Sumonto Chatterjee
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define f1(a,b) for(ll i=a;i<=b;i++)
#define f2(a,b) for(ll j=a;j<=b;j++)
#define f3(a,b) for(ll k=a;k<=b;k++)
#define fr(a,b) for(ll r=a;r>=b;r--)
#define all(a) a.begin(),a.end()
#define pb push_back
#define vll vector<long long int>
#define LL (ll)
#define mod 1000000007
#define line '\n'
// vector<bool> isprime(2e5+5, true);
// void sieve(ll n)
// {
// 	isprime[0]=isprime[1]=false;
// 	for (ll i = 2; i * i <= n; i++)
// 		if (isprime[i])
// 	    	for (ll j = i * i; j <= n; j += i)
// 	            isprime[j] = false;
// }
// ll expo(ll a, ll b, ll m)
// {
//     a %= m;
//     long long res = 1;
//     while (b > 0)
//     {
//         if (b & 1)
//             res = res * a % m;
//         a = a * a % m;
//         b >>= 1;
//     }
//     return res;
// }
// /*segment tree*/
// ll tree[4*200005];
// /*initally, v=1, l=0, r=n-1, pos in 0 based index*/
// void update(ll v, ll pos, ll val, ll l, ll r)
// {
// 	if(l==r)
// 		tree[v]=val;
// 	else
// 	{
// 		ll mid=(l+r)/2;
// 		if(pos<=mid)
// 			update(2*v, pos, val, l, mid);
// 		else
// 			update(2*v+1, pos, val, mid+1, r);
// 		tree[v]=tree[2*v]+tree[2*v+1];
// 	}
// }
// l,r are array segment bounds, x,y are query bounds.....all are in 0 based index
// ll query(ll v, ll l, ll r, ll x, ll y)
// {
// 	if(x>y)
// 		return 0;
// 	if(l==x && r==y)
// 		return tree[v];
// 	ll mid=(l+r)/2;
// 	return query(2*v, l, mid, x, min(y, mid))+query(2*v+1, mid+1, r, max(x, mid+1), y);
// }
// void range_update(ll v, ll x, ll y, ll val, ll l, ll r)
// {
// 	if(x>y) return;
// 	if(l==x && y==r)
// 		tree[v]+=val;
// 	else
// 	{
// 		ll mid=(l+r)/2;
// 		range_update(2*v,x, min(mid, y), val, l, mid);
// 		range_update(2*v+1, max(x, mid+1), y, val, mid+1, r);
// 	}
// }
// ll range_query(ll v, ll l, ll r, ll pos)
// {
// 	if(l==r)
// 		return tree[v];
// 	ll mid=(l+r)/2;
// 	if(pos<=mid)
// 		return tree[v]+range_query(2*v, l, mid, pos);
// 	else
// 		return tree[v]+range_query(2*v+1, mid+1, r, pos);
// }
void solve()
{
	ll n;
	cin>>n;
	if(n==0)
	{
		cout<<"Yes"<<line;
		return;
	}
	while(n%10==0)
	{
		n/=10;
	}
	ll val=0, temp=n;
	while(temp)
	{
		val = val*10 + (temp%10);
		temp/=10;
	}
	if(n==val)
		cout<<"Yes"<<line;
	else
		cout<<"No"<<line;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    #ifndef ONLINE_JUDGE
    	freopen("input.txt", "r", stdin);
    	freopen("output.txt", "w", stdout);
    #endif
	//ll t; cin>>t; while(t--)
	solve();
}
