#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(long long i=0;i<(n);++i)
using ll = long long;
using P=pair<long long ,long long>;

bool isPalindrome(string s){
  string rs=s;
  reverse(rs.begin(),rs.end());
  return rs==s;
}

int main() {
  int n;
  cin>>n;
  if(n==0){
    cout<<"Yes"<<endl;
    return 0;
  }
  while(n%10==0) n/=10;
  
  if(isPalindrome(to_string(n))){
    cout<<"Yes"<<endl;
  }else{
    cout<<"No"<<endl;
  }
  return 0;
}
   
  
  
  

#pragma GCC optimize("Ofast,unroll-loops,fast-math")
#include<bits/stdc++.h>
using namespace std;
typedef long long ll ;
#define pll pair<ll , ll >
#define all(x) (x).begin(),(x).end()
#define SZ(x) (ll)(x).size()
#define X   first
#define Y   second
#define mp  make_pair
#define pii pair<int , int>
#define vec vector
#define file_io freopen("input.txt", "r", stdin);freopen("output.txt", "w", stdout);
#define migmig ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define pb push_back
// BIG p : 1000000000000037 , 100000000003
ll poww(ll a, ll b, ll md) {
    return (!b ? 1 : (b & 1 ? a * poww(a * a % md, b / 2, md) % md : poww(a * a % md, b / 2, md) % md));
}
const int maxn = 1000*100+5 ;
const ll inf = 9223372036854775807 ;
const ll mod = 1e9 + 7 ;
const int lg = 20 ;
int ans = 1 ; 
int main()
{
	migmig ;
	vec<char> v ; 
	char c ; 
	string s ; 
	cin>>s ;
	if(s == "0"){
		cout<<"Yes" ; return 0 ; 
	}
	for(int i = 0 ; i < SZ(s) ; i ++ ) v.pb(s[i]) ; 
	while(v.back() == '0') v.pop_back() ;
	for(int i = 0 ; i <= SZ(v) / 2 ; i ++ ){
		if(v[i] != v[(SZ(v) - 1 - i)]) ans = 0 ; 
	}
	if(ans) cout<<"Yes" ; 
	else cout<<"No" ; 
}








