var
i:integer;
j:integer;
check: integer;
n: integer;
answer: array[1..10] of integer;

function numberSum(a: integer): integer;
begin
 if (a<10) then numberSum:=a else
 numberSum:=(a mod 10)+numberSum(a div 10);
end;

function skeletonhSum(a:integer): integer;
begin
 if (a=1) then skeletonhSum:=0 else
  begin
   i:=1;
   repeat
   i:=i+1;
   until (a mod i = 0); 
   skeletonhSum:=numberSum(i)+skeletonhSum(a div i);
  end;
end;

function skeletonSum(a:integer): integer;
begin
 if (a=1) then skeletonSum:=0 else
  begin
   i:=1;
   repeat
   i:=i+1;
   until (a mod i = 0); 
   skeletonSum:=i+skeletonSum(a div i);
  end;
end;

BEGIN
read(n);
for j:= 1 to n do
 begin
  read(check);
  repeat
   check:=check+1;
  until (skeletonhSum(check) = numberSum(check)) and (skeletonSum(check)<>check);
  answer[j]:=check;
 end;
for j:= 1 to n do //массив тут не обов`язковий, просто зважаючи на те, що виводячи строку, яку видає програма на компьютері я отримую правильну відповідь, я вирішив перестрахуватися
begin
 write(answer[j]);
 write(' ');
end;
END.