#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")  
#pragma GCC target("avx,avx2,fma")
 
#define f(i,a,b) for(ll  i = a; i < (ll) b ; i++ ) 
#define af(i,a,b) for(ll i = a; i >= (ll) b ; i--)
#define rep(i,a,b,k) for(ll  i = a; i < (ll) b ; i+= k )
#define arep(i,a,b,k) for(ll i = a; i >= (ll) b ; i-= k)
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define all(a) a.begin(), a.end()
#define sz(a) (ll) a.size()
#define sor(a) sort( a.begin(), a.end() )
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL)
#define ller   ios::sync_with_stdio(false);cin.tie(0)
 
// policy-based
 
 
 
 
using namespace std;
 
typedef long long ll; // ll or ll
typedef long double ld;
typedef pair<ll,ll> ii ;
typedef vector<ll>  vi ;
typedef vector<ii> vii ;
  
const ll MAX = 2e6 + 20;
const ll mod = 1e9 + 7;
const ll inf = 1e13;


ll d[MAX],d1[MAX],d2[MAX];
int main(){
	fastio;
	f(i,1,MAX){
		rep(j,i,MAX,i) d[j]++;
	}
	f(i,1,MAX){
		rep(j,i,MAX,i) d1[j]+=d[i];
	}
	f(i,1,MAX) d1[i] += d1[i-1];
	ll k;
	cin >> k;
	cout << d1[k] << endl;
	return 0;
}
#include <bits/stdc++.h>
using namespace std;

int main()
{       
    string s,str;
    cin>>s;

    int n=s.size(),cnt=0,zero=0;
    str=s;
    reverse(str.begin(),str.end());
    vector<char>v;

    for(int i=n-1; i>=0; i--)
    {
        if(s[i]=='0')
        {
            zero++;
            v.push_back(s[i]);
        }
        else
        break;
    }

    for(int i=0; i<n; i++)
    {
        v.push_back(s[i]);
    }

    for(int i=0, j=v.size()-1; j>=i; i++,j--)
    {
        if(v[i]==v[j])
        {
            cnt++;
        }
    }

    if((s==str) || (zero>0 && (v.size()+1)/2==cnt))
    cout<<"Yes"<<endl;
    
    else
    cout<<"No"<<endl;

    return 0;
}