program div3;
const max=100;
maxcifre=100000;
var N,i,h,Somma:integer;
V, soluzione:array[1..max] of int64;
resto: array[1..maxcifre] of integer;
cifre :array[1..maxcifre] of integer;
restocifre, contacifre, frequenza:array[1..maxcifre] of longint;
contacifra, res: longint;
procedure sommacifre (a:int64);
var j:longint;
begin
j:=1; somma:=0; contacifra:=0;
while a >=1 do
begin
cifre[j]:= a mod 10;
somma:=somma+cifre[j];
j:=j+1;
a:=a div 10;
end;
contacifra:=j-1;
end;
begin
readln(N);
for i:=1 to N do read(V[i]); readln;
for i:=1 to N do begin soluzione[i]:=0; frequenza[i]:=0; end;
for i:=1 to N do
begin
sommacifre(V[i]);
contacifre[i]:=contacifra;
restocifre[i]:=somma mod 3;
end;
for i:=1 to N do
begin
if restocifre[i]=0 then soluzione[i]:=V[i]
else
begin
for h:=contacifre[i] downto 1 do
begin
resto[h]:=cifre[h] mod 3; write(resto[h]);
if resto[h]=1 then frequenza[1]:=frequenza[1]+1
else if resto[h]=2 then frequenza[2]:=frequenza[2]+1;
end;
writeln;
writeln(restocifre[i]);
for h:=1 to 2 do write(frequenza[h]); writeln;
end;
end;
end.
writeln(soluzione[i]);
end;
end.
cHJvZ3JhbSBkaXYzOwpjb25zdCBtYXg9MTAwOwogICAgICBtYXhjaWZyZT0xMDAwMDA7CnZhciBOLGksaCxTb21tYTppbnRlZ2VyOwogICAgViwgc29sdXppb25lOmFycmF5WzEuLm1heF0gb2YgaW50NjQ7CiAgICByZXN0bzogYXJyYXlbMS4ubWF4Y2lmcmVdIG9mIGludGVnZXI7CiAgICBjaWZyZSA6YXJyYXlbMS4ubWF4Y2lmcmVdIG9mIGludGVnZXI7CiAgICByZXN0b2NpZnJlLCBjb250YWNpZnJlLCBmcmVxdWVuemE6YXJyYXlbMS4ubWF4Y2lmcmVdIG9mIGxvbmdpbnQ7CiAgICBjb250YWNpZnJhLCByZXM6IGxvbmdpbnQ7Cgpwcm9jZWR1cmUgc29tbWFjaWZyZSAoYTppbnQ2NCk7ICAKdmFyIGo6bG9uZ2ludDsKYmVnaW4KICBqOj0xOyBzb21tYTo9MDsgY29udGFjaWZyYTo9MDsKICB3aGlsZSBhID49MSBkbwogICAgICAgICBiZWdpbgogICAgICAgICAgICBjaWZyZVtqXTo9IGEgbW9kIDEwOwogICAgICAgICAgICBzb21tYTo9c29tbWErY2lmcmVbal07CiAgICAgICAgICAgIGo6PWorMTsKICAgICAgICAgICAgYTo9YSBkaXYgMTA7CiAgICAgICAgIGVuZDsgCiAgIGNvbnRhY2lmcmE6PWotMTsKIGVuZDsKIApiZWdpbgoJcmVhZGxuKE4pOwoJZm9yIGk6PTEgdG8gTiBkbyByZWFkKFZbaV0pOyByZWFkbG47Cglmb3IgaTo9MSB0byBOIGRvIGJlZ2luIHNvbHV6aW9uZVtpXTo9MDsgZnJlcXVlbnphW2ldOj0wOyBlbmQ7Cglmb3IgaTo9MSB0byBOIGRvCgkgICAgICAgICAgICAgICBiZWdpbgoJICAgICAgICAgICAgICAgICAgc29tbWFjaWZyZShWW2ldKTsKCSAgICAgICAgICAgICAgICAgIGNvbnRhY2lmcmVbaV06PWNvbnRhY2lmcmE7CgkgICAgICAgICAgICAgICAgICByZXN0b2NpZnJlW2ldOj1zb21tYSBtb2QgMzsKCSAgICAgICAgICAgICAgIGVuZDsgIAoJCglmb3IgaTo9MSB0byBOIGRvCgkgICAgICAgICAgICAgIGJlZ2luCgkgICAgICAgICAgICAgICAgICBpZiByZXN0b2NpZnJlW2ldPTAgdGhlbiBzb2x1emlvbmVbaV06PVZbaV0KCSAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGg6PWNvbnRhY2lmcmVbaV0gZG93bnRvIDEgZG8KCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luIAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9baF06PWNpZnJlW2hdIG1vZCAzOyB3cml0ZShyZXN0b1toXSk7CgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZXN0b1toXT0xIHRoZW4gZnJlcXVlbnphWzFdOj1mcmVxdWVuemFbMV0rMQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiByZXN0b1toXT0yIHRoZW4gZnJlcXVlbnphWzJdOj1mcmVxdWVuemFbMl0rMTsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsgIAoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZWxuOyAKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZWxuKHJlc3RvY2lmcmVbaV0pOwoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBoOj0xIHRvIDIgZG8gd3JpdGUoZnJlcXVlbnphW2hdKTsgd3JpdGVsbjsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ7IAoJICAgICAgICAgICAgICBlbmQ7IAplbmQuCiAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlbG4oc29sdXppb25lW2ldKTsgCiAgICAgICAgICAgICAgICAgICAgZW5kOwplbmQuCg==