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 DrawLine(k, n: integer);
var
inner: integer;
begin
PrintSpaces(n - k);
write('*');
if k > 1 then
begin
PrintSpaces(2 * k - 3);
write('*');
end;
inner := k - 2;
if (n >= 5) and (inner >= 1) and
(inner <= n - 4) then
begin
PrintSpaces(2 * (n - k) + 1);
write('*');
if inner > 1 then
begin
PrintSpaces(2 * inner - 3);
write('*');
end;
end;
writeln;
end;
procedure DrawTop(k, n: integer);
begin
if k <= n then
begin
DrawLine(k, n);
DrawTop(k + 1, n);
end;
end;
procedure DrawBottom(k, n: integer);
begin
if k >= 1 then
begin
DrawLine(k, n);
DrawBottom(k - 1, n);
end;
end;
begin
repeat
write('Enter diamond height (odd number >= 5): ');
readln(n);
until (n >= 5) and (n mod 2 = 1);
n := n div 2 + 1;
DrawTop(1, n);
DrawBottom(n - 1, n);
end.