program enigmath;
Uses Math;
const MAXX=108;
var
Emin, Emax, E, i, S, K, t, sum, a : longint;
cod, dec :array[1..1000000] of Longint;
function codifica (x:Longint):Longint;
begin
if x < 10 then codifica:=x (* single digit*)
else
begin
S := 0; K:= x;
while K>0 do
begin
S:=S + K mod 10; (*sum of digits*)
K:=K div 10;
end;
codifica:=x + codifica(S);
end;
end;
begin
{
uncomment the following lines if you want to read/write from files
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
}
for i:=0 to MAXX do
begin
cod[i]:=codifica(i); (* precompute encoding of small numbers*)
dec[i] := -1; (*no decoding found so far*)
end;
for i:=1 to MAXX do write(cod[i],' '); end.
(*sum of digits of the number before the start*)
sum := 0;
if (Emin > MAXX) then
for t:=Emin-MAXX-1 downto 1 do
begin
t:=t div 10;
sum:= sum + (t mod 10);
end
else sum := -1;
a:= max(Emin-MAXX,0);
for E:=a to Emax do
begin (*update sum of digits*)
inc(sum);
for t:=E downto 1 do
begin
if t mod 10 =0 then t:=t div 10;
sum :=sum-9;
end;
(*store encoding of E*)
if E >= 10 then E:=E+ cod[E mod MAXX];
if dec[E mod MAXX] = -1 then E:=E
else dec[E mod MAXX]:=-2;
(* print decodings of E if appropriate*)
if (E >= Emin) then
if dec[E mod MAXX] = -1 then writeln ('IMPOSSIBLE')
else if (dec[E mod MAXX] = -2 then writeln ('AMBIGUOUS')
else writeln (dec[E mod MAXX]);
end;
(* reset*)
dec[E mod MAXX] := -1;
end;
end.
cHJvZ3JhbSBlbmlnbWF0aDsKVXNlcyBNYXRoOwpjb25zdCBNQVhYPTEwODsKdmFyCiAgICBFbWluLCBFbWF4LCBFLCBpLCBTLCBLLCB0LCBzdW0sIGEgOiBsb25naW50OwogICAgY29kLCBkZWMgOmFycmF5WzEuLjEwMDAwMDBdIG9mIExvbmdpbnQ7CiAgICAKZnVuY3Rpb24gY29kaWZpY2EgKHg6TG9uZ2ludCk6TG9uZ2ludDsKIGJlZ2luCiAgICBpZiB4IDwgMTAgdGhlbiBjb2RpZmljYTo9eCAoKiBzaW5nbGUgZGlnaXQqKQogICAgICAgICAgICAgIGVsc2UgCiAgICAgICAgICAgICAgICBiZWdpbgoJCQkJCSBTIDo9IDA7IEs6PSB4OwoJCQkJCSB3aGlsZSBLPjAgZG8gCiAgICAgICAgICAgIAkJCQkJIGJlZ2luIAogICAgICAgICAgICAJCQkJCQlTOj1TICsgSyBtb2QgMTA7ICgqc3VtIG9mIGRpZ2l0cyopCiAgICAgICAgICAgIAkJCQkJCUs6PUsgZGl2IDEwOwogICAgICAgICAgICAJCQkJCWVuZDsgIAogICAgCQkJCWNvZGlmaWNhOj14ICsgY29kaWZpY2EoUyk7CiAgICAgICAgICAgICAgIGVuZDsKZW5kOwoKYmVnaW4KewogICAgdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZXMgaWYgeW91IHdhbnQgdG8gcmVhZC93cml0ZSBmcm9tIGZpbGVzCiAgICBhc3NpZ24oaW5wdXQsICAnaW5wdXQudHh0Jyk7ICByZXNldChpbnB1dCk7CiAgICBhc3NpZ24ob3V0cHV0LCAnb3V0cHV0LnR4dCcpOyByZXdyaXRlKG91dHB1dCk7Cn0KCiAgICBmb3IgaTo9MCB0byBNQVhYIGRvCiAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICBjb2RbaV06PWNvZGlmaWNhKGkpOyAoKiBwcmVjb21wdXRlIGVuY29kaW5nIG9mIHNtYWxsIG51bWJlcnMqKQogICAgICAgICAgICAgICAgICAgICAgZGVjW2ldIDo9IC0xOyAgKCpubyBkZWNvZGluZyBmb3VuZCBzbyBmYXIqKQogICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgIGZvciBpOj0xIHRvIE1BWFggZG8gd3JpdGUoY29kW2ldLCcgJyk7ICAgZW5kLiAgICAgICAgICAgICAgICAKICAgKCpzdW0gb2YgZGlnaXRzIG9mIHRoZSBudW1iZXIgYmVmb3JlIHRoZSBzdGFydCopCiAgICBzdW0gOj0gMDsKICAgIGlmIChFbWluID4gTUFYWCkgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAgdDo9RW1pbi1NQVhYLTEgZG93bnRvIDEgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6PXQgZGl2IDEwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW06PSBzdW0gKyAodCAgbW9kIDEwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kICAgCiAgICAgICAgICAgICAgICAgICAgZWxzZSBzdW0gOj0gLTE7CiAgICAgIGE6PSAgbWF4KEVtaW4tTUFYWCwwKTsgICAgICAgICAgICAKICAgICBmb3IgRTo9YSB0byBFbWF4ICAgZG8KICAgICAgICAgICAgICAgICBiZWdpbiAgKCp1cGRhdGUgc3VtIG9mIGRpZ2l0cyopCiAgICAgICAgICAgICAgICAgICAgaW5jKHN1bSk7CiAgICAgICAgICAgICAgICAgICAgZm9yIHQ6PUUgZG93bnRvIDEgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0IG1vZCAxMCA9MCB0aGVuICB0Oj10IGRpdiAxMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdW0gOj1zdW0tOTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOyAgCiAgICAgICAgICAgICAgICAgICAgICAgICAoKnN0b3JlIGVuY29kaW5nIG9mIEUqKQogICAgICAgICAgICAgICAgICAgIGlmICBFID49IDEwIHRoZW4gRTo9RSsgY29kW0UgbW9kIE1BWFhdOwogICAgICAgICAgICAgICAgICAgIGlmIGRlY1tFIG1vZCBNQVhYXSA9IC0xIHRoZW4gRTo9RQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBkZWNbRSBtb2QgTUFYWF06PS0yOwogICAgICAgICgqIHByaW50IGRlY29kaW5ncyBvZiBFIGlmIGFwcHJvcHJpYXRlKikKICAgICAgICBpZiAoRSA+PSBFbWluKSB0aGVuIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAgZGVjW0UgbW9kIE1BWFhdID0gLTEgdGhlbiB3cml0ZWxuICgnSU1QT1NTSUJMRScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChkZWNbRSBtb2QgTUFYWF0gPSAtMiB0aGVuIHdyaXRlbG4gKCdBTUJJR1VPVVMnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHdyaXRlbG4gKGRlY1tFICBtb2QgTUFYWF0pOwogICAgICAgIGVuZDsKICAgICAgICAoKiByZXNldCopCiAgICAgICAgZGVjW0UgIG1vZCBNQVhYXSA6PSAtMTsKICAgZW5kOwogZW5kLgo=