#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double db;
#define x first
#define y second
#define bg begin()
#define ed end()
#define pb push_back
#define mp make_pair
#define sz(a) int((a).size())
#define R(i,n) for(int i(0);i<(n);++i)
#define L(i,n) for(int i((n)-1);~i;--i)
const int iinf=0x3f3f3f3f;
const ll linf=0x3f3f3f3f3f3f3f3f;
//Data
const int N=1e6;
int k,n;
vector<int> pw;
vector<bitset<N>> b[11];
bitset<N> tmp,tot;
//Main
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>k>>n; int w=-1;
R(i,1123)if(!i){
pw.pb(1),tot.reset();
R(d,k) tmp.reset(),d&&(tmp.set(d%n),true),tot|=tmp,b[d].pb(tmp);
if(b[k].pb(tot),b[k][0][0]){w=i;break;}
} else {
pw.pb(pw[i-1]*10%n),tot.reset();
R(d,k) tmp=(b[k][i-1]<<d*pw[i]%n)|(b[k][i-1]>>(n-d*pw[i]%n)),
d&&(tmp.set(d*pw[i]%n),true),tot|=tmp,b[d].pb(tmp);
if(b[k].pb(tot),b[k][i][0]){w=i;break;}
}
if(!~w) assert(0);
else {
int now=0;
L(i,w+1){
int x=0;
R(d,k)if(b[d][i][now]){x=d,now=(now-d*pw[i]%n+n)%n;break;}
cout<<x;
}
cout<<'\n';
}
return 0;
}