program paveiksliukas_is_zvaigzduciu;
  { 153 u‘davinys }
  const MAX_N = 20; { maksimalus paveiksliuko dydis }
  type piesinys = array [1..MAX_N, 1..MAX_N] of boolean;
       lentele = array [1..MAX_N*MAX_N] of boolean;

  procedure piesti (n: integer; var pav: piesinys);

    procedure delioti_zvaigzdutes (n: integer; pirm: lentele;
                                   var pav: piesinys);
    { sud‚lioja ‘vaig‘dutes vietoj pirmini— skai‡i— }
      var x, k, i, j: integer;
    begin
      k := -1;   { k rodo krypt (ar  kairŠ, ar  dežinŠ)}
      i := 1; j := 1; { i - eilut‚, j - stulpelis }
      for x := 1 to n*n do
        begin
           pav[i, j] := pirm[x];
           if (k = -1) and ((i = n) or (j = 1))
              then  { jei pri‚jome kairj arba apatin kražt… }
                 begin
                   if i = n
                      then j := j + 1
                      else i := i + 1;
                   k := -k
                 end
           else if (k = 1) and ((i = 1) or (j = n))
              then  { jei pri‚jome dežinj arba viržutinj kražt… }
                begin
                  if j = n
                     then i := i + 1
                     else j := j + 1;
                  k := -k
                end
           else begin
                  i := i - k;
                  j := j + k
                end
        end;
   end; { d‚lioti_‘vaig‘dutes }

   var pirm: lentele;
       i, j, nn: integer;
  begin { piežti }
    { randame pirminius skai‡ius }
    nn := n * n;
    for i := 1 to nn do
      pirm[i] := true;
    {ižmetame nepirminius skai‡ius}
    pirm[1] := false;
    for i := 2 to nn div 2 do
      for j := 2 to nn div i do
          pirm[i*j] := false;
     delioti_zvaigzdutes (n, pirm, pav);
  end; { piežti }

  var n, i, j: integer;
      pav: piesinys;
begin
  readln (n);
  piesti (n, pav);
  for i := 1 to n do
    begin
      for j := 1 to n do
          if pav[i, j]
             then write ('  *')
             else write ('  .');
      writeln;
    end;
end.