#include <bits/stdc++.h>
#ifdef _DEBUG
#include "_DEBUG.hpp"
#endif
#define int long long
using namespace std;
using P = pair<int, int>;
const int inf = 2e18;
const int mod = 1e9 + 7;

template <typename T>
istream &operator>>(istream &is, vector<T> &v) {
  for (T &in : v) is >> in;
  return is;
}

template <class T>
vector<T> make_vec(size_t a) {
  return vector<T>(a);
}

template <class T, class... Ts>
auto make_vec(size_t a, Ts... ts) {
  return vector<decltype(make_vec<T>(ts...))>(a, make_vec<T>(ts...));
}

template <class T, class V>
typename enable_if<is_class<T>::value == 0>::type fill(T &t, const V &v) {
  t = v;
}

template <class T, class V>
typename enable_if<is_class<T>::value != 0>::type fill(T &t, const V &v) {
  for (auto &e : t) fill(e, v);
}

bool kaibun(string s) {
  bool ok = true;
  for (int i = 0; i < s.size() / 2; i++) {
    if (s[i] != s[(int)s.size() - 1 - i]) ok = false;
  }
  return ok;
}

signed main() {
  string s;
  cin >> s;

  bool ok = false;
  for (int i = 0; i < 99; i++) {
    string t = s;
    for (int j = 0; j < i; j++) {
      t.insert(0, "0");
    }
    if (kaibun(t)) {
      ok = true;
      break;
    }
  }
  cout << (ok ? "Yes" : "No") << endl;

  return 0;
}
#include<bits/stdc++.h>

using namespace std;

int main(){
    int n;
    cin >> n;
    while(n!=0&&n%10==0){
        n/=10;
    }
    int k=0;
    int o=n;
    while(o!=0){
        k*=10;
        k+=(o%10);
        o/=10;
    }
    if(k==n){
        cout << "Yes" << endl;
    }else{
        cout << "No" << endl;
    }
    return(0);
}