var
  t:array [1..10] of integer;
  i:integer;
  ar:array [0..10] of boolean;

  procedure disp;
  var i:integer;
  begin
    if int(random*10)=0 then
    begin
      for i:=1 to 10 do write(t[i],',');
      writeln;
    end;
  end;

  function test:boolean;
  var total,i:integer;a:boolean;
  begin
    a:=true;
    for i:=1 to 10 do
    begin
      total:=total+t[i];
      a:=a and (total=trunc(total/i));
    end;
    if a then readln;
    test:=a;
  end;

  procedure inc;
  var
    a:integer;
    done:boolean;
  begin
    a:=1;
    done:=false;
    while not done do
    begin
      t[a]:=t[a]+1;
      ar[t[a]-1]:=false;
      if t[a]>9 then begin
        t[a]:=1;
        while ar[t[a]] do t[a]:=t[a]+1;
        a:=a+1;
        if a=5 then a:=a+1;
      end else if not ar[a] then
      begin
        done:=true;
        ar[a]:=true;
      end;
    end;
  end;

begin
  for i:=1 to 10 do t[i]:=1;
  for i:=1 to 10 do ar[i]:=true;
  t[5]:=5;
  t[10]:=0;
  ar[0]:=true;
  ar[5]:=true;
  ar[1]:=true;
  while (1=1) do
  begin
    inc;
    disp;
    test;
  end;
end.
