{                    Sprendimo idėja                    

    Uždavinį patogu spręsti nuo labirinto "apačios". Pirmiausia
 pradėsime nuo kryžkelių prie kurių "prikabinti" tik brangakmeniai.
 Tarkime turime tokį labirinto fragmentą (žvaigždutės - kryžkelės):

          |           |          |
                                 *
                        --------------------     
                        |        |         |
                        7        *         *
                              -------    -----
                              |  |  |    |   |
                              8  3  4    2   5

  Kadangi nežinome kieno tai ėjimas, kryžkelei atsiminsime 2
 skaičius - kokį brangakmenį būtų paėmęs berniukas ir kokį šeimininkas.

          |           |          |
                                 *
                        --------------------     
                        |        |         |
                        7       Š 3       Š 2
                                B 8       B 5
                              -------    -----
                              |  |  |    |   |
                              8  3  4    2   5
  Dabar nagrinėsime tas kryžkeles, prie kurių prikabintos tik 
"įvertintos" kryžkelės ir brangakmeniai. Berniuko ėjimui įvertinti
imsime maksimumą iš žemesnio lygio šeimininko "įvertinimų" ir 
brangakmenių. Analogiškai šeimininkui - minimumas iš berniuko 
"įvertinimų" ir brangakmenių.

          |           |          |
                                Š 5
                                B 7
                        --------------------     
                        |        |         |
                        7       Š 3       Š 2
                                B 8       B 5
                              -------    -----
                              |  |  |    |   |
                              8  3  4    2   5

  Kartodami šį žingsnį užlipsime iki viršaus (įėjimo). Ten
 turėsime du skaičius - įvertinimą, jei pradėtų šeimininkas ir
 įvertinimą, jei pradėtų berniukas. Paėmę pastarąjį, turėsime 
 atsakymą.

}

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+,Y+}
{$M 64000,0,655360}

program labirintas;

  const N = 10000;   { Maksimalus kryžkelių ir aklaviečių skaičius } 
        bv = 'lobiai.dat';  { Duomenų byla }

  type irasas = record
                  tevas : integer;
                  S, B : integer;
                end;

  var lab : array[1..N] of irasas; {Labirintas}
      t : text;
      sk1, sk2, i : integer;
      x : irasas;

  function skaiciuoti : integer;

   var vaikai,  { Kiek i-oji kryžkelė turi šakų ("vaikų") }
       tikr : array[1..N]of word; { Kurias kryžkeles tikrinti }
       kiek_tikr : word;

  procedure kryzkeles;
  { Perskaitoma informacija apie kryžkeles }
    var c : char;
        tv, v : integer;
  begin
    Assign(t, bv); Reset(t);
    FillChar(vaikai, SizeOf(vaikai), 0);
    readln(t, sk1, sk2);
    for i := 1 to sk1+sk2 do
      begin
        readln(t, c, tv, v);
        if c = 'K'
          then begin
                 lab[v].tevas := tv;  { Įsimename "tėvą" }
                 lab[v].B := 0; { Kol kas reikšmių nežinome }
                 lab[v].S := 0; 
                 if tv <> 0 
                   then inc(vaikai[tv]) { Priskaičiuojame "vaiką" }
               end
          else if tv <> 0 
                 then inc(vaikai[tv]) { Aklavietė irgi "vaikas"}
      end;
    Close(t)
  end;

  procedure brangakmeniai;
  { Perskaitoma informacija apie brangakmenius }
    var c : char;
        tv, v : integer;
  begin
    Assign(t, bv); Reset(t);
    kiek_tikr := 0;
    readln(t, sk1, sk2);
    for i := 1 to sk1+sk2 do
      begin
        readln(t, c, tv, v);
        if c = 'A'
          then begin
                 dec(vaikai[tv]);
                 if vaikai[tv] = 0  { Jei visos šakos - "aklavietės", }
                   then begin  { tai įtraukiame šią kryžkelę į sąrašą,}
                          inc(kiek_tikr); {kad galima naudoti jos}
                          tikr[kiek_tikr]:=tv {"informaciją" }
                        end;  { aukštesniame lygyje }
                 { Įvertiname... }
                 if (lab[tv].B = 0)or(lab[tv].B<v) then lab[tv].B := v;
                 if (lab[tv].S = 0)or(lab[tv].S>v) then lab[tv].S := v
               end
      end;
    Close(t)
  end;

  procedure lipti;
  { Keliausime medžiu aukštyn, iki įėjimo } 
    var i : integer;
        nauj_tikr : word;
  begin
    while lab[tikr[1]].tevas<>0 do
      begin
        nauj_tikr := 0;
        for i := 1 to kiek_tikr do { Tikriname reikiamas kryžkeles }
          begin 
            { Įvertiname berniuko ėjimą }      
            if (lab[lab[tikr[i]].tevas].B = 0)or
               (lab[lab[tikr[i]].tevas].B < lab[tikr[i]].S)
               then lab[lab[tikr[i]].tevas].B := lab[tikr[i]].S;
            { Įvertiname šeimininko ėjimą }      
            if (lab[lab[tikr[i]].tevas].S = 0)or
               (lab[lab[tikr[i]].tevas].S > lab[tikr[i]].B)
               then lab[lab[tikr[i]].tevas].S := lab[tikr[i]].B;
            dec(vaikai[lab[tikr[i]].tevas]);
            if vaikai[lab[tikr[i]].tevas] = 0 { Naudosime "tėvą" tik}
              then begin { tada, kai bus patikrinti visi jo "vaikai" }
                     inc(nauj_tikr);
                     tikr[nauj_tikr]:=lab[tikr[i]].tevas
                   end
          end;
        kiek_tikr := nauj_tikr;
      end
  end;

  begin
    kryzkeles;
    brangakmeniai;
    lipti;
    skaiciuoti := lab[tikr[1]].B
  end;

begin
  writeln(skaiciuoti);
end.