/*
求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。 不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。
输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。a,b是十进制整数,2 =< a,b <= 16。
数据可能存在包含前导零的情况。
*/
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int a,b;
string n;
int isuln(char c)//判断是uppercase还是lowercase还是num
{
if(c-'0'>=0&&'9'-c>=0){return 1;}
else if(c-'a'>=0&&'z'-c>=0){return 2;}
else if(c-'A'>=0&&'Z'-c>=0){return 3;}
return -1;
}
int main()
{
while(cin>>a>>n>>b)
{
ll ans=0;
reverse(n.begin(),n.end());
for(int i=0;i<n.size();i++)//将a进制数,按数字和大小写分类,还原到十进制
{
if(isuln(n[i])==1){ans+=(n[i]-'0')*pow(a,i);}
else if(isuln(n[i])==2){ans+=(n[i]-'a'+10)*pow(a,i);}
else if(isuln(n[i])==3){ans+=(n[i]-'A'+10)*pow(a,i);}
}
//cout<<36168%7;
ll tmp=ans;
string s;
while(tmp>0)//从低位开始,按b进制逐位加入s,最后将s翻转即低位在右边
{
int re=tmp%b;
if(re<10){s+=re+'0';}
else if(re>=10){s+=re-10+'A';}
tmp/=b;
}
reverse(s.begin(),s.end());
cout<<s<<endl;
}
return 0;
}