#include<bits/stdc++.h>
//#include<unordered_map>
//#include<unordered_set>

//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
/*
using namespace __gnu_pbds;
template <typename T>
using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
priority_queue<int, greater<int>, pairing_heap_tag> pq[1009];
#define fbo         find_by_order
#define ook         order_of_key
*/
typedef long long ll;
typedef unsigned long long ull;
typedef vector< vector<ll> >matrix;
#define gcd(A,B)        __gcd(A,B)
#define PQ              priority_queue
#define ii              int,int
#define pll             pair<ll,ll>
#define PI              2*acos(0.0)
#define all(v)          v.begin(),v.end()
#define pii             pair<ii>
#define pb              push_back
#define sf(x)           scanf("%I64d",&x)
#define sff(x,y)        scanf("%I64d %I64d",&x,&y)
#define sl(x)           scanf("%lld",&x)
#define sll(x,y)        scanf("%lld %lld",&x,&y)
#define ff              first
#define ss              second
#define segtree         lt=2*par,rg=2*par+1,mid=(st+en)/2
#define read            freopen("input.txt","r",stdin)
#define write           freopen("output.txt","w",stdout)
#define fast            ios_base::sync_with_stdio(0),cin.tie(0)
#define lead_zero(x)    __builtin_clzll(x)
#define trail_zero(x)   __builtin_ctz(x)
#define total_1s(x)     __builtin_popcount(x)
#define max_ull         18446744073709551615
#define max_ll          9223372036854775807;
#define set(N,cur)      N=(N|(1LL<<cur))
#define reset(N,cur)    N=(N&(~(1LL<<cur)))
#define check(N,cur)    ((N&(1LL<<cur))==0)
#define all(v)          v.begin(),v.end()
#define reunique(v)     v.resize(std::unique(all(v)) - v.begin())
#define loop            int test;scanf("%d",&test);for(int _T=1;_T<=test;_T++)
/* int dx[] = {1,-1,0,0} , dy[] = {0,0,1,-1}; */ // 4 Direction
/* int dx[] = {1,-1,0,0,1,1,-1,-1} , dy[] = {0,0,1,-1,1,-1,1,-1}; */ // 8 Direction
/* int dx[] = {1,-1,1,-1,2,2,-2,-2} , dy[] = {2,2,-2,-2,1,-1,1,-1}; */ // Knight Direction
/* int dx[] = {2,-2,1,1,-1,-1} , dy[] = {0,0,1,-1,1,-1}; */ // Hexagonal Direction
/*
struct node1
{
    bool can;
    ll x,y,z;
    node1()
    {
        can=x=y=z=0;
    }
    node1(bool f,ll a,ll b,ll c)
    {
        can=f;
        x=a;
        y=b;
       z=c;
    }
};
struct node2
{
    ll x,y,z;
    node2()
    {
        x=y=z=0;
    }
};
node1 dp[1009][1009];
bool visited[1009][1009];
node2 ara[1009];
int n,m;
node1 recur(ll pos,ll need)
{
    if(need==0)
        return node1(1,0,0,0);
    if(pos>=n) return node1(0,0,0,0);
    node1& ans=dp[pos][need];
    if(visited[pos][need]==1)return ans;
    visited[pos][need]=1;
    node1 r1;
    node1 r3=recur(pos+1,need-1);
    r1.can=r3.can;
    r1.x=ara[pos].x+r3.x;
    r1.y=ara[pos].y+r3.y;
    r1.z=ara[pos].z+r3.z;
    node1 r2=recur(pos+1,need);
    ll y=abs(r2.x)+abs(r2.y)+abs(r2.z);
    ll x=abs(r1.x)+abs(r1.y)+abs(r1.z);
    if(r1.can and r2.can)
    {
        ans=x>=y?r1:r2;
    }
    else if(r1.can)
    {
        ans=r1;
    }
    else if(r2.can)
    {
        ans=r2;
    }
    else
    {
        ans=node1(0,0,0,0);
    }
    return ans;
}
bool comp(node2 a,node2 b)
{
    if(a.x<b.x)
        return 1;
    else if(a.y<b.y)
        return 1;
    else if(a.z<b.z)
        return 1;
    return 0;
}
int main()
{
    scanf("%d %d",&n,&m);
    for(int i=0;i<n;i++)
    {
        scanf("%lld %lld %lld",&ara[i].x,&ara[i].y,&ara[i].z);
    }
    sort(ara,ara+n,comp);
    ll x,y,z;
    x=y=z=0;
    for(int i=0;i<m;i++)
    {
        x+=ara[i].x;
        y+=ara[i].y;
        z+=ara[i].z;
    }
    ll ans=abs(x)+abs(y)+abs(z);
    x=y=z=0;
    int j=0;
    for(int i=n-1;i>-1,j<m;i--,j++)
    {
        x+=ara[i].x;
        y+=ara[i].y;
        z+=ara[i].z;
    }
    ans=max(ans,abs(x)+abs(y)+abs(z));
    cout<<ans<<endl;
}*/

int main()
{
    ll d,n;
    ll ans;
    cin>>d>>n;
    if(d==0)
    {
        int cnt=0;
        for(int i=1; i<=1000000000; i++)
        {
            if(i%100)
                cnt++;
            if(cnt==n)
            {
                cout<<i<<endl;
                return 0;
            }
        }
    }
    else if(d==1)
    {
        int cnt=0;
        for(ll i=100;; i++)
        {
            if(i%100==0 and (i/100)%100!=0)
                cnt++;
            if(cnt==n)
            {
                cout<<i<<endl;
                return 0;
            }
        }
    }
    else
    {
        int cnt=0;
        for(ll i=100*100;; i++)
        {
            if(i%100==0 and (i/100)%100==0 and ((i/100)/100)%100!=0)
                cnt++;
            if(cnt==n)
            {
                cout<<i<<endl;
                return 0;
            }
        }
    }
}


Measured memory_bytes: 256