/**
 *    Author  : Tanbin_Hasan
 *    Created : 15.11.2020
**/
#include <bits/stdc++.h>
using namespace std ;
typedef int_fast64_t ll ;
typedef uint_fast64_t ull ;
double pi = acos(-1.0) ;
double eps = 1e-9 ;
ll L = 31250001 ;
const ll md = 1e9 + 7 ;
#define pb push_back
#define SP(x) cout << fixed << setprecision(x)
vector <ll> check ;
#define on(x) (check[x >> 6] & (1LL << (x & 63)))
#define set1(x) check[x >> 6] |= (1LL << (x & 63))
int main(void)
{
    ios_base::sync_with_stdio(false) ; cin.tie(nullptr) ; cout.tie(nullptr) ;
    #ifdef FILE_IO
    #define FILE_IO
    freopen("input.txt" , "r" , stdin) ; freopen("output.txt" , "w" , stdout) ;
    #endif
    ll n ; cin >> n ;
    cout << ((n < 0) ? 0 : n) << '\n' ;
    return 0 ;
}

/**
 * author : madhav
 * handle : madhav10
**/
#include <bits/stdc++.h>
using namespace std;

#define For(start,end,inc) for( int i=(start);i<(end);i+=inc)
#define pb push_back
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(),(x).end()
#define mp make_pair

bool isPalindrome(string s){
	int n=s.length();
	for(int i=0;i<n/2;i++){
		if(s[i]!=s[n-i-1]){
			return false;
		}
	}
	return true;
}
template <typename T ,typename U>
T max_self(T a,U b){
    if(b>a){
        a=b;
    }
    return a;
}
template <typename T ,typename U>
T min_self(T a,U b){
    if(b<a){
        a=b;
    }
    return a;
}

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vli;
typedef pair<int,int> ii;
typedef pair<ll, ll> lii;

void solve(){
	string s;
	cin>>s;
	int n=s.length();
	int i=0,j=n-1;
	while(i<n && s[i]=='0'){
		i++;
	}
	while(j>=0 && s[j]=='0'){
		j--;
	}
	if(i>j){
		cout<<"Yes\n";
		return;
	}
	int range=j-i+1;
	bool ok=true;
	for(int k=0;k<range/2;k++){
		//cout<<k+i<<" "<<i+range-k<<"\n";
		if(s[k+i]!=s[i+range-k-1]){
			ok=false;
		}
	}
	cout<<(ok?"Yes":"No")<<"\n";
	
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int tt=1;
	//cin>>tt;
	while(tt--){
		solve();
	}
    return 0;
}


