program ideone;

type TData=array[0..8,0..8] of Integer;
type TArr=array[0..8,0..8] of Boolean;

const data:TData=
(
  (10,11,12,13,14,15,16,17,18),
  (19,20,21,22,23,24,25,26,27),
  (28,29,30,31,32,33,34,35,36),
  (37,38,39,40,41,42,43,44,45),
  (46,47,48,49,50,51,52,53,54),
  (55,56,57,58,59,60,61,62,63),
  (64,65,66,67,68,69,70,71,72),
  (73,74,75,76,77,78,79,80,81),
  (82,83,84,85,86,87,88,89,90)
);

procedure randShow(var arr:TArr;ToShow:Integer);
var I,P:Integer;
var swap:Boolean;
begin
  for I:=0 to ToShow-1 do arr[0,I]:=true;
  for I:=ToShow to 9*9-1 do arr[0,I]:=false;
  for I:=1 to 9*9-1 do
  begin
  	P:=Random(I+1);
  	swap:=arr[0,P];
  	arr[0,P]:=arr[0,I];
  	arr[0,I]:=swap;
  end;
end;

procedure show(const data:TData;const arr:TArr);
var Y,X:Integer;
begin
  for Y:=0 to 9-1 do
  begin
    for X:=0 to 9-1 do
    begin
      if arr[Y,X] then Write(' ',data[Y,X]) else Write(' --');
    end;
    WriteLn;
  end;
  WriteLn;
end;

var arr:TArr;
begin
  Randomize;
  randShow(arr,10);
  show(data,arr);
  randShow(arr,20);
  show(data,arr);
  randShow(arr,30);
  show(data,arr);
  randShow(arr,40);
  show(data,arr);
end.