program q;
const nmax=100;
type TArr=array [0..nmax,0..nmax] of longint;
var a:tarr;
i,n:integer;
procedure Trans(t,n:longint; var num:string);
begin
if t=0 then num:='0'
else
begin
num:='';
while t<>0 do begin
if t mod n > 9
then num:=chr(t mod n +55)+num
else num:=chr(t mod n +48)+num;
t:=t div n;
end;
end;
end;
procedure printinn(const n:integer);
var i,j,t:integer;
num:string;
begin
num:='';
for i:=1 to n do begin
for j:=1 to n do begin
if i+j<>0 then trans (a[i,j],n,num);
write(num:3);
end;
writeln;
end;
end;
procedure fillSumm(var a:tarr;const n:integer);
var j,i:integer;
begin
for i:=1 to n do
for j:=1 to n do a[i,j]:=a[i,0]+a[0,j];
end;
procedure fillmult(var a:tarr; const n:integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
a[i,j]:=a[i,0]*a[0,j];
end;
begin
readln(n);
for i:=1 to n do begin
a[i+1,0]:=i;a[0,i+1]:=i;
end;
writeln('Summ:');FillSumm(a,n);
printinn(n);
writeln('multiplication:'); fillMult(a,n);
printinn(n);
end.