var pocet : integer; kody : array[1..200] of string[3]; transakce : array[1..200, 1..200] of extended; dostupnost : array[1..200, 1..200] of extended; i, j, k : integer; kod1, kod2 : string[4]; transakci : longint; pomer : string; radek : string; zmena, konec : boolean; nova : extended; function cisloMeny(kod : string) : integer; var i : integer; begin i := 1; while kody[i] <> kod do begin inc(i); end; cisloMeny := i; end; function prevedPomer(pomer : string) : extended; var i, err : integer; c1, c2 : integer; pom : extended; begin i := pos(':', pomer); val(copy(pomer, 1, i - 1), c1, err); val(copy(pomer, i + 1, length(pomer) - i), c2, err); pom := c1/c2; {writeln(pom);} prevedPomer := pom; end; begin readln(pocet); while pocet <> 0 do begin konec := false; for i := 1 to 200 do begin for j := 1 to 200 do begin transakce[i, j] := 0; dostupnost[i, j] := 0; end; end; {readln(radek); for i := 1 to pocet do begin kod1 := copy(radek, 1, 3); delete(radek, 1, 4); kody[i] := kod1; writeln(kod1); end; } for i := 1 to pocet do begin read(kod1); if kod1[1] = ' ' then begin delete(kod1, 1, 1); end; kody[i] := kod1; { writeln(kod1);} end; readln(transakci); for i := 1 to transakci do begin readln(radek); kod1 := copy(radek, 1, 3); kod2 := copy(radek, 5, 3); pomer := copy(radek, 9, length(radek) - 8); transakce[cisloMeny(kod1), cisloMeny(kod2)] := prevedPomer(pomer); end; for i := 1 to pocet do begin for j := 1 to pocet do begin if transakce[i, j] <> 0 then begin dostupnost[i, j] := transakce[i, j]; end; end; end; zmena := true; while (zmena) and not(konec) do begin zmena := false; for k := 1 to pocet do begin if dostupnost[k, k] <> 0 then begin if dostupnost[k, k] < 1 then begin writeln('Arbitrage'); konec := true; break; end; end; for i := 1 to pocet do begin if dostupnost[k, i] <> 0 then begin for j := 1 to pocet do begin if dostupnost[i, j] <> 0 then begin nova := dostupnost[k, i] * dostupnost[i, j]; if (dostupnost[k, j] = 0) or (nova < dostupnost[k, j]) then begin dostupnost[k, j] := nova; zmena := true; end; end; end; end; end; end; end; { for i := 1 to pocet do begin for j := 1 to pocet do begin write(dostupnost[i, j]:3:3, ' '); end; writeln; end;} if not konec then begin writeln('Ok'); end; readln(pocet); end; end.