#include <iostream>
#include <string>
bool isValid(std::string s, int N)
{
for (int i = 0; i < s.size(); i++)
{
if (s[i] >= 'a')
{
if (s[i] - 'a' + 10 >= N)
{
return false;
}
}
else
{
if (s[i] - '0' >= N)
{
return false;
}
}
}
return true;
}
//进制转换
int nTransform(char s, int &temp)
{
if (s >= 'a')
{
temp = s -'a' + 10;
}
else
{
temp = s - '0';
}
return 0;
}
int tenToN(std::string &result, int &count, int addTemp, int N)
{
if (addTemp >= N)
{
addTemp = addTemp - N;
if (addTemp >= 10)
{
result[count] = addTemp - 10 + 'a';
}
else
{
result[count] = addTemp + '0';
}
result[++count] = '1';
}
else
{
if (addTemp >= 10)
{
result[count] = addTemp - 10 + 'a';
}
else
{
result[count] = addTemp + '0';
}
++count;
}
return 0;
}
int main()
{
int N;
std::string s1, s2;
std::cin>>N>>s1>>s2;
std::string result(100, '0');
//判断输入的是否合法
if (!isValid(s1, N) || !isValid(s2, N))
{
return -1;
}
//N进制相加
int addTemp, s1Temp, s2Temp, resultTemp, count = 0;
for (int i = s1.size() - 1, j = s2.size() - 1; i >= 0 &&j >= 0; i--, j--)
{
//进制转换
nTransform(s1[i], s1Temp);
nTransform(s2[j], s2Temp);
nTransform(result[count], resultTemp);
//计算转为10进制的结果
addTemp = s1Temp + s2Temp + resultTemp;
//将10进制结果转为N进制进行保存
tenToN(result, count, addTemp, N);
}
if (s1.size() > s2.size())
{
for (int i = s1.size() - s2.size() -1; i >=0; i--)
{
nTransform(s1[i], s1Temp);
nTransform(result[count], resultTemp);
addTemp = s1Temp + resultTemp;
tenToN(result, count, addTemp, N);
}
}
else
{
for (int i = s2.size() - s1.size() -1; i >=0; i--)
{
nTransform(s2[i], s2Temp);
nTransform(result[count], resultTemp);
addTemp = s2Temp + resultTemp;
tenToN(result, count, addTemp, N);
}
}
int m = result.size() - 1;
while(result[m] =='0')
{
m--;
}
for (; m>=0; m--)
{
std::cout<<result[m];
}
return 0;
}