program diamond;
var
n, k: integer;
procedure PrintSpaces(count: integer);
begin
if count > 0 then
begin
write(' ');
PrintSpaces(count - 1);
end;
end;
procedure PrintChars(count: integer);
begin
if count > 0 then
begin
write('*');
PrintChars(count - 1);
end;
end;
procedure PrintLine(k, n: integer);
var
innerK, innerN: integer;
begin
PrintSpaces(n - k);
if k = 1 then
PrintChars(1)
else
begin
write('*');
PrintSpaces(2 * k - 3);
write('*');
end;
if (n >= 4) and (k >= 2) and (k <= n - 1) then
begin
innerK := k - 1;
innerN := n - 2;
PrintSpaces(2 * innerN - 2 * innerK + 1);
write('*');
if innerK > 1 then
begin
PrintSpaces(2 * innerK - 3);
write('*');
end;
end;
writeln;
end;
procedure DrawTop(k, n: integer);
begin
if k <= n then
begin
PrintLine(k, n);
DrawTop(k + 1, n);
end;
end;
procedure DrawBottom(k, n: integer);
begin
if k >= 1 then
begin
PrintLine(k, n);
DrawBottom(k - 1, n);
end;
end;
begin
write('Enter diamond height (positive odd): ');
readln(n);
if (n > 0) and (n mod 2 = 1) then
begin
n := n div 2 + 1;
DrawTop(1, n);
DrawBottom(n - 1, n);
end;
end.