program enigmath;(*Essendo E=N+S(N)+S(S(N))...il problema chiede di trovare N=E-[S(N)+S(S(N))...]*)
(*Si noti che la somma massima delle cifre per un numero inferiore a 10^9 è 9x9=81.*)
(*La "somma delle somme" massima è però 79 + 16 + 7 = 102 ottenuta da numeri tipo 799999999, e le decodificazioni di E sono superiori a E-102.*)
Uses Math;
const MAXX=102;
var
Emin, Emax, i, S, K, inizio, val, count :longint;
cod, dec :array[0..1000000]oflongint;(*in cod[i] metto la codifica del numero e in dec[i], inizializzato a zero, sommo +1 tutte le volte che trovo*)(*un numero N di cui è la codifica*)
function codifica (x:Longint):Longint;
begin
if x < 10then codifica:=x (* single digit*)
else
begin
S :=0; K:= x;
while K>0do
begin
S:=S + K mod10;(*sum of digits*)
K:=K div10;
end;
codifica:=x + codifica(S);
end;
end;
begin
readln(Emin,Emax);
if Emin<=102then inizio:=0(*Quindi, se Emin>=102 parto da Emin-102 , altrimenti parto da zero e salvo la loro codifica*)
else inizio:=Emin-102;
count:=Emax-Emin+1;(*numero di termini da considerare*)
for i:=inizio to count do dec[i]:=0;
for i := inizio to Emax do
begin
val := codifica(i);
if(Emin <= val)and(val <= Emax)then
begin
cod[val-Emin]:=i;
dec[val-Emin]:=dec[val-Emin]+1;
end;
end;
for i :=0to count-1do
begin
if dec[i]=0thenwriteln('IMPOSSIBLE')(*no decodings exist for E*)
elseif dec[i]>1thenwriteln('AMBIGUOUS')(*multiple possible decodings exist for E*)