program rats; const size=10000; type arr = array[1..size] of integer; arr1 = array[0..9] of integer; var a,b : arr; d,p : arr1; i,n,m : integer; procedure initial; var i,j,k : integer; begin for i:=1 to size do a[i]:=0; writeln('Input number in subscript form d_1 p_1 ... d_m p_m'); writeln('terminated by ctrl-z'); k:=0; while not(eof) do begin read(d[k+1],p[k+1]); k:=k+1; end; n:=0; for i:=1 to k do begin for j:=1 to p[i] do b[n+j]:=d[i]; n:=n+p[i]; end; for i:=1 to n do a[i]:=b[n+1-i]; end; procedure sort; var i,j : integer; num : arr1; begin for i:=0 to 9 do num[i]:=0; for i:=1 to n do num[a[i]]:=num[a[i]]+1; j:=1; for i:=9 downto 0 do begin while (num[i]>0) do begin a[j]:=i; num[i]:=num[i]-1; j:=j+1; end; end; while (a[n]=0) do n:=n-1; end; procedure reverse; var i : integer; begin for i:=1 to size do b[i]:=0; for i:=1 to n do b[i]:=a[n+1-i]; end; procedure add; var c,i,t : integer; begin c:=0; for i:=1 to n+1 do begin t:=a[i]+b[i]+c; a[i]:=t mod 10; c:=t div 10; end; if a[n+1]<>0 then begin n:=n+1; m:=n; end; end; procedure print; var i,c,num : integer; begin write(n:0,' '); num:=a[n]; write(num:0,'_'); c:=1; for i:=n-1 downto 1 do if (a[i]=num) then c:=c+1 else begin write(c:0,' ',a[i]:0,'_'); num:=a[i]; c:=1; end; writeln(c:0); end; begin initial; print; repeat reverse; add; sort; print; until (n>=size); end.