#include <iostream>
#include <cstring>
#include <queue>
#include <cstdlib>
#include <stdio.h>
#define MAX 15000
#define INF 9999999
using namespace std;
int n,sum=0;
bool isBuild[150][150];
int low[150];
int e[205][205];
int visit[250];
int book[250];
void prim()
{
for(int i=1; i<=n; i++)
{
low[i]=e[1][i];
book[i]=0;
}
book[1]=1;
int k;
for(int i=1; i<=n; i++)
{
int min1=999999;
for(int j=1; j<=n; j++)
{
if(low[j]<min1&&!book[j])
{
min1=low[j];
k=j;
}
}
if(min1==999999) break;//要break 否则多了不必要的步骤
sum+=min1;
book[k]=1;
for(int f=1; f<=n; f++)
{
if(!book[f]&&low[f]>e[k][f])
{
low[f]=e[k][f];
}
}
}
}
int main()
{
int num,a,b;
while(cin>>n)
{
sum=0;
memset(visit,0,sizeof(visit));
memset(book,0,sizeof(book));
for(int i=1; i<=n; i++)
for(int k=1; k<=n; k++)
{
cin>>e[i][k];
}
cin>>num;
while(num--)
{
cin>>a>>b;
e[a][b]=e[b][a]=0;//妙啊 建好了就让他最小为0
}
prim();
cout<<sum<<endl;
}
}