#include <stdio.h>
#include <math.h>
#include <stdbool.h>
#define MAXSIZE 50
typedef int ElemType;
typedef struct {
    ElemType data[MAXSIZE];
    int top;
} Stack_int;
// 初始化一个数字栈:
void InitStack(Stack_int* S) {
    S->top = -1;
}
// 进栈:
bool Push(Stack_int* S, ElemType x) {
    if (S->top == MAXSIZE - 1)
        return false;
    else {
        S->data[++S->top] = x;
        return true;
    }
}
// 出栈:
bool Pop(Stack_int* S, ElemType* x) {
    if (S->top != -1) {
        *x = S->data[S->top--];
        return true;
    } else
        return false;
}
// 计算字符串长度:
int Length(char a[]) {
    int n = 0;
    for (int i = 0; a[i] != '\0'; i++) {
        n++;
    }
    return n;
}
// 字符串相加:
void AddString(char a[], char b[]) {
    int lena = Length(a);
    int lenb = Length(b);
    int len;
    if (lena >= lenb)
        len = lena + 1;
    else
        len = lenb + 1;
    char c[50] = "";
    int m = len;
    int n = len;
    int t = len;
    while (lena)
        a[--len] = a[--lena];
    for (int i = 0; i < len - lena; i++)
        a[i] = '0';
    while (lenb)
        b[--t] = b[--lenb];
    for (int i = 0; i < t - lenb; i++)
        b[i] = '0';
    int number = 0;
    while (m--) {
        if ((a[m] - '0') + (b[m] - '0') + number < 10) {
            c[m] = '0' + ((a[m] - '0') + (b[m] - '0') + number);
            number = 0;
        } else {
            c[m] = '0' + ((a[m] - '0') + (b[m] - '0') + number - 10);
            number = 1;
        }
    }
    for (int k = 0; k < n; k++)
        a[k] = c[k];
    int count = 0;
    while (c[count] == '0')
        count++;
    int p = Length(a);
    int o = 0;
    for (o = 0; count < p; count++)
        a[o++] = a[count];
    for (o = o; o < p; o++)
        a[o] = '\0';
}
int DecimalToBinary(char a[], int x) {
    int len = Length(a);
    int number = 0;
    for (int j = 0; j < len; j++) {
        number = number * 10 + (a[j] - '0');
        a[j] = '0' + number / x;
        number = number % x;
    }
    int count = 0;
    while (a[count] == '0')
        count++;
    int k = 0;
    for (k; count < len; count++)
        a[k++] = a[count];
    while (k < len)
        a[k++] = '\0';
    return number;
}
int main() {
    Stack_int S;
    InitStack(&S);
    char a[20] = "";
    char b[20] = "";
    int m;
    while ((scanf("%d%s%s", &m, a, b) != EOF)) {
        if (m == 0)
            break;
        else {
            if(a[0]=='0'&&b[0]=='0')
                printf("0");
            else
            {
                AddString(a, b);
            while (a[0] != '\0') {
                int x = DecimalToBinary(a, m);
                Push(&S, x);
            }
            while (S.top != -1) {
                int x;
                Pop(&S, &x);
                printf("%d", x);
            }
            printf("\n");
            }           
        }
    }
    return 0;
}