{
TASK:folders
LANG:PASCAL
}
program folders;
type
  TFolder = ^TFld;
  TFld = record
    Name: String;
    Subs: array[1..9] of TFolder;
    Time: Integer;
  end;

var
  A, B: TFolder;

procedure Add(var C: TFolder; Count: Integer);
var
  I: Integer;
  s, s1: String;
  m, n, k: Integer;
begin
  for I := 1 to Count do
  begin
    New(C^.Subs[I]);
    for I := 1 to 9 do
      C^.Subs[I]^.Subs[I] := nil;
    ReadLn( s);
    k := Pos(' ',s);
    A^.Name := Copy(s, 1, k-1);
    s1 := Copy(Copy(s, k+1, Length(s)), 1, Pos(' ', Copy(s, k+1, Length(s)-1)));
    val(s1,m,k);
    s1 := Copy(s, Length(A^.Name+' '+s1+' '), Length(s));
    val(s1,k,n);
    A^.Time := n;
    C^.Subs[I]^.Name := s;
    C^.Subs[I]^.Time := n;
    Add(C^.Subs[I], m);
  end;
end;

procedure InputData;
var
  s, s1: String;
  m, n, k, I: Integer;
begin
  for I := 1 to 9 do
    A^.Subs[I] := nil;
  ReadLn(s);
  k := Pos(' ',s);
  A^.Name := Copy(s, 1, k-1);
  s1 := Copy(Copy(s, k+1, Length(s)), 1, Pos(' ', Copy(s, k+1, Length(s)-1)));
  val(s1,m,k);
  s1 := Copy(s, Length(A^.Name+' '+s1+' '), Length(s));
  val(s1,k,n);
  A^.Time := n;
  Add(A, m);
end;

procedure Extract(var C: TFolder);
var
  I: Integer;
begin
  WriteLn(C^.Name, ' ',C^.Time);
  for I := 1 to 9 do
    if C^.Subs[I] <> nil then Extract(C^.Subs[I]);
end;

begin
  New(A);
  InputData;
  WriteLn(4);
end.