Listing: NUMERE.PAS  
program numere; 
 var f:Text; 
 i,n,k,m,mm:Longint; 
 ok:Boolean; 
 x,a:array[0..1000] of Longint; 
 
  function corect:Boolean; 
 var i,baza,rez:Longint; 
 begin 
 x[0]:=1; 
 rez:=0; 
 baza:=1; 
 for i:=0 to k do 
 begin 
 baza:=baza*x[i]; 
 rez:=rez+a[i]*baza 
 end; 
 corect:=rez=mm 
 end; 
 
 Begin 
 Assign(f,'numere.in'); Reset(f); 
 Readln(f,m); 
 mm:=m; 
 Readln(f,n); 
  for i:=1 to n do 
 Read(f,x[i]); 
 Close(f); 
 Assign(f,'numere.out'); 
 Rewrite(f); 
 k:=0; 
 ok:=true; 
  while (k<n)and(m<>0) do 
 begin 
 a[k]:=m mod x[k+1]; 
 m:=m div x[k+1]; 
 k:=k+1 
 end; 
 k:=k-1; 
  if (k<n)and(m=0) and corect 
 then 
 begin 
 Writeln(f,'DA'); 
 Writeln(f,k); 
 for i:=0 to k do 
 Write(f,a[i],' ') 
 end 
 else Write(f,'NU'); 
 Close(f) 
 End.

[cuprins]