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
****************************************************************/