#include "bits/stdc++.h"
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace __gnu_pbds;
using namespace std;
using namespace std::chrono;

#define ll long long
#define ld long double
#define sz(c) ((ll)c.size())
#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
#define int ll
const ll inf = 1e18;

const int mod = 1e9 + 7;
const int mod2 = 998244353;

high_resolution_clock::time_point curTime() { return high_resolution_clock::now(); }

#define rep(i,n) for(int i=0;i<n;i++)



signed main()
{
    ios_base :: sync_with_stdio(false);
    cin.tie(NULL);
    auto startTime = curTime();

    int n;
    cin>>n;

    if(n==0)
    {
        cout<<"Yes"<<endl;
        return 0;
    }

    while(n%10==0) n/=10;

    vector<char> s;

    while(n)
    {
        s.push_back(n%10);
        n/=10;
    }
    reverse(s.begin(), s.end());

    bool f =true;
    for(int i=0;i<sz(s)/2;i++)
    {
        if(s[i]!=s[sz(s)-i-1]) f=false;
    }

    cout<<(f? "Yes" : "No")<<endl;

    auto stopTime = curTime();
    auto duration = duration_cast<microseconds>(stopTime - startTime);
    //cout<<"Program ran for "<<(ld)duration.count()/1e6<<" "<<"seconds"<<endl;
}
#include<bits/stdc++.h>
using namespace std;
long long dp[15][205];
int L;
int main(){
    scanf("%d",&L);
    dp[0][0] = 1;
    for(int i=1;i<=12;i++)
        for(int j=1;j<=L;j++){
            for(int k=L;k>=max(j,i);k--){
                dp[i][k] += dp[i-1][k-j];
            }
        }
    printf("%lld\n",dp[12][L]);
    return 0;
}