var ans,n,min,i,j,q,p,x,y:longint;
a:array[0..101,0..101] of longint;
d,f:array[0..101] of longint;
v:array[0..101] of boolean;

procedure prim;
var i,j:longint;
begin
  for i:=1 to n do d[i]:=maxlongint;
  d[1]:=0;
  for i:=1 to n do f[i]:=1;
  for i:=1 to n do
  begin
    min:=maxlongint;
    for j:=1 to n do
      if (v[j]=false) and (d[j]<min) then
        begin
          min:=d[j];
          q:=j;
        end;
    ans:=ans+a[q,f[q]];
    v[q]:=true;
    for j:=1 to n do
      if (q<>j) and (v[j]=false) and (a[q,j]>=0) and (a[q,j]<d[j]) then
        begin
          d[j]:=a[q,j];
          f[j]:=q;
        end;
  end;
end;

begin
readln(n);
for i:=1 to n do
for j:=1 to n do
read(a[i,j]);
readln(p);
for i:=1 to p do
begin
  read(x,y);
  a[x,y]:=0;
  a[y,x]:=0;
end;
prim;
write(ans);
end.
AC
/**************************************************************
	Problem: 2070
	User: admin
	Language: Pascal
	Result: Wrong Answer
****************************************************************/