program ideone;

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

const data:TData=
(
  (1,2,3,4,5,6,7,8,9),
  (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)
);

procedure rand30(var arr:TArr;const data:TData);
var copy:TData;
var I,P,swap:Integer;
begin
  copy:=data;
  for I:=0 to high(TArr) do
  begin
  	P:=Random(9*9-I);
  	swap:=copy[0,P];
  	copy[0,P]:=copy[0,I];
  	copy[0,I]:=swap;
  	arr[I]:=swap;
  end;
end;

procedure show(const arr:TArr);
var I:Integer;
begin
  for I:=0 to high(TArr) do Write(' ',arr[I]);
  WriteLn;
end;

var arr:TArr;
begin
  Randomize;
  rand30(arr,data);
  show(arr);
  rand30(arr,data);
  show(arr);
  rand30(arr,data);
  show(arr);
  rand30(arr,data);
  show(arr);
end.