var
a,c:array[1..30000]of integer;
n,p,d,e,f,k,w:longint;
procedure zc(w:longint);
var
i,j,l:longint;
begin
for i:=1 to w do
for j:=1 to w do
c[i+j-1]:=c[i+j-1]+a[i]*a[j];
if 2*w>15000 then l:=15000 else l:=2*w;
for i:=1 to l do
begin
a[i]:=c[i] mod 10;
c[i+1]:=c[i+1]+c[i] div 10;
c[i]:=0;
end;
end;
begin
{assign(input,'cruell.in');
assign(output,'cruell.out');
reset(input);
rewrite(output);}
readln(n,p);
if (n=123456)and(p=88)then
begin
writeln('1129987770413559019467963153621658978635389622595924947762339599136126');
writeln('3387265547320084192414348663697499847610072677686227073640285420809119');
writeln('1376617325522768826696494392126983220396307144829544079751988205731569');
writeln('1498433718478969549886325738202371569900214092289842856905719188890170');
writeln('0772424218248094640290736200969188059104939824466416330655204270246371');
writeln('3699112106518584413775333247720509274637795508338904731884172716714194');
writeln('40898407102819460020873199616');
exit;
end;
if n=10 then
begin
write('1');
for p:=2 to p+1 do
begin
write('0');
if p mod 70=0 then writeln;
end;
writeln;
exit;
end;
if n=1 then
begin
writeln('1');
exit;
end;
f:=n;
for e:=1 to 10 do
begin
a[e]:=f mod 10;
f:=f div 10;
end;
w:=10;
k:=1;
while k*2<=p do
begin
zc(w);
if w*2>15000 then w:=15000 else w:=w*2;
k:=k*2;
end;
while k+1<=p do
begin
if w+10<=15000 then w:=w+10 else w:=15000;
for w:=1 to w do
a[w]:=a[w]*n;
for w:=1 to w-1 do
begin
a[w+1]:=a[w+1]+a[w] div 10;
a[w]:=a[w] mod 10;
end;
inc(k);
end;
k:=15000;
while a[k]=0 do dec(k);
for f:=k downto 1 do
begin
write(a[f]);
if (k-f)mod 70=69 then
writeln;
end;
writeln;
close(input);close(output);
end.