var
n,p1,p2,dian:integer;
a,b:array[1..10000] of integer;
procedure qq;
var
s1,s2:ansistring;
q1,q2,i:integer;
begin
readln(n);
readln(s1);
readln(s2);
p1:=length(s1);
p2:=length(s2);
q1:=pos('.',s1);
q2:=pos('.',s2);
if q10
then begin
dian:=p1-q1; p1:=p1-1;
delete(s1,q1,1);
end;
if q20
then begin
dian:=dian+p2-q2; p2:=p2-1;
delete(s1,q2,1);
end;
for i:=1 to p1 do
if s1[i] in ['A'..'G']
then a[p1-i+1]:=ord(s1[i])-55
else a[p1-i+1]:=ord(s1[i])-ord('0');
for i:=1 to p2 do
if s2[i] in ['A'..'G']
then b[p2-i+1]:=ord(s2[i])-55
else b[p2-i+1]:=ord(s2[i])-ord('0');
end;
procedure main;
var
s:string;
i,j,qq,aa:integer;
c:array[1..10000] of integer;
begin
fillchar(c,sizeof(c),0);
for i:=1 to p1 do
for j:=1 to p2 do
c:=c+b[j]*a[i];
if c[p1+p2]0
then qq:=p1+p2
else qq:=p1+p2-1;
for i:=1 to qq do
if c[i]>=n
then begin
c:=c+(c[i] div n);
c[i]:=c[i] mod n;
end;
if c[qq+1]0
then qq:=qq+1;
s:='';
for i:=1 to qq do
if c[i]>=10
then s:=s+chr(c[i]+55)
else s:=s+chr(c[i]+ord('0'));
if dian>0
then begin
insert('.',s,dian+1);
qq:=qq+1; aa:=0;
for i:=1 to qq do
if s[i]='0'
then inc(aa)
else break;
if s[aa+1]='.'
then delete(s,1,aa+1)
else delete(s,1,aa);
end;
qq:=length(s);
for i:=qq downto 1 do
if s[i]'0'
then break;
if s[i]='.'
then begin
insert('0',s,1);
i:=i+1;
end;
for j:=i downto 1do
write(s[j]);
writeln;
end;
begin
qq;
main;
end.