var
 Zad : Word;
 iZad : Word;
 TokId, TokTo, TokMove : array [1..250000] of Integer;
 iPole : Word;
 NumL,NumA : Word;
 DoRead:Boolean;
 PocTok : Word;
 CharPos : Word;
 TokIn, TokPos : word;
 ActId : Word;
 MoveBy,MoveTo,MoveFrom : Word;
 
begin
 Readln(Zad);
 for iZad := 1 to Zad do begin
  for iPole := 1 to 250000 do begin
   TokTo[iPole]:=0;
   TokId[iPole]:=0;
   TokMove[iPole]:=0;
  end; 
  ActId := 0;
  DoRead := true;
  CharPos := 0;
  TokIn := 0;
  Writeln('Zadani ',iZad,':');
  while DoRead do begin
   Read(NumL); Readln(NumA);
   if NumL>0 then begin
    Inc(ActId);
    Inc( CharPos, NumL );

    if TokIn=0 then begin
     Writeln('0');
    end else begin
     Writeln(ActId-TokId[1]);
     MoveBy := 0;
     MoveFrom := 1;
     for TokPos := 1 to TokIn do begin
      if TokTo[TokPos]<=CharPos then begin
       TokMove[TokPos] := -1;
       Inc(MoveBy);
       if MoveFrom=1 then MoveFrom := TokPos+1;
      end else begin
       TokMove[TokPos] := MoveBy;
      end;
     end;
     if MoveBy>0 then begin
      for TokPos := MoveFrom to TokIn do begin
       if TokMove[TokPos]>0 then begin
        MoveTo := TokPos - TokMove[TokPos];
        TokTo[MoveTo] := TokTo[TokPos];
        TokId[MoveTo] := TokId[TokPos];
       end; 
      end;
      TokIn := TokIn - MoveBy;
     end;  (* MoveBy>0 *)
    end; (* TokIn>0 *)
    
    if NumA>0 then begin
     Inc(TokIn);
     TokTo[TokIn] := CharPos + NumA;
     TokId[TokIn] := ActId;
    end;

   end else  (* NumL=0 *)
    DoRead := false;
  end; (* DoRead *)
  Writeln;
  
 end;  (* for iZad *)
end.