//#include <stdio.h>
//int arr[1001][1001] = {}, queue[2][1000001], m, n, start, front = -1; rear = -1, num = 0;
//int x, y;
//
//void enq(int i, int j)
//{
// if(i < 0 || j < 0 || i >= m || j >= n || arr[i][j]!=0) return;
// rear++;
// queue[0][rear]=i;
// queue[1][rear]=j;
// arr[i][j] = 1;
//
//}
//
//void deq()
//{
// front++;
// x = queue[0][front];
// y = queue[1][front];
//}
//
//void bfs(int i, int j)
//{
// enq(i+1,j);
// enq(i-1, j);
// enq(i, j+1);
// enq(i, j-1);
//}
//
//int main()
//{
// int p = 0;
// scanf("%d %d", &m, &n);
// for(int j = 0; j < n; j++){
// for(int i = 0; i < m; i++){
// scanf("%d", &arr[i][j]);
// if(arr[i][j] == 0){
// p++;
// }
// else if(arr[i][j]==1){
// rear++;
// queue[0][rear]=i;
// queue[1][rear]=j;
// arr[i][j] = 1;
// }
// }
// }
// if(p == 0){
// printf("0");
// return 0;
// }
//
// while(front!=rear)
// {
// int goal = rear;
// for(;front!=goal;)
// {
// deq();
// bfs(x,y);
// }
// num++;
// }
//
// for(int j = 0; j < n; j++){
// for(int i = 0; i < m; i++){
// if(arr[i][j] == 0){
// printf("-1");
// return 0;
// }
// }
// }
//
// printf("%d", num-1);
//}
/*
rec(n) : 리턴 >> 1부터 n까지의 합
리턴 >> 1 + 2+ 3 + ... +n-1 + n
리턴 >> 1부터 n-1까지의합 + n
리턴 >> rec(n-1) + n
#include <stdio.h>
int rec(int n)
{
if(n==1) return 1;
return rec(n-1)+n;
}
int main()
{
int n;
scanf("%d", &n);
printf("%d", rec(n));
}
#include <stdio.h>
int c = 0, a;
long long int rec(int n, int k)
{
if(c>=k) return 1;
c++;
return rec(n, k)*n;
}
int main()
{
int n, k;
scanf("%d %d", &n, &k);
if(n == 0){
printf("1");
return 0;
}
else if(n == 1){
printf("1");
return 0;
}
else if(n == -1){
if(k%2 == 0) printf("1");
else if(k%2 == 1) printf("-1");
return 0;
}
a = n;
printf("%lld", rec(n, k));
}
*/
#include <stdio.h>
int rec(int n, int k)
{
if(n == 0) return;
rec(n/k, k);
printf("%d", n%k);
}
int main()
{
int n, k;
scanf("%d %d", &n, &k);
rec(n, k);
}



