#include <iostream>
using namespace std;
#define INF 100001
int adj[251][251]={0};
int dist[251];
int vis[251]={0};
int dis[251][251]={0};
void dijkstra(int n, int s)
{
int cnt=0;
int i,curr,newdist,k;
for(i=0;i<n;i++)
{
vis[i]=0;
dist[i]=INF;
}
dist[s]=0;
curr= s;
vis[s]=1;
while(cnt!=n)
{
newdist=dist[curr];
for(i=0;i<n;i++)
{
if(i!=curr && (adj[curr][i]+newdist)<dist[i])
dist[i]=adj[curr][i]+newdist;
}
int min=10000;
for(i=0;i<n;i++)
{
if(vis[i]!=1 && dist[i]<min)
{
min=dist[i];
k=i;
}
}
curr=k;
vis[k]=1;
cnt++;
}
for(i=0;i<n;i++)
dis[s][i]=dist[i];
}
int main() {
// your code goes here
int n,m,g,p,q;
cin>>n;
int i,j,src,dest;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cin>>adj[i][j];
}
}
for(i=0;i<n;i++)
dijkstra(n,i);
cin>>m;
int w;
while(m--)
{
cin>>src>>g>>dest;
w=dis[src][g]+ dis[g][dest]-adj[src][dest];
if(w<0)
w=0;
cout<<dis[src][g]+ dis[g][dest]<<" "<<w<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiNkZWZpbmUgSU5GIDEwMDAwMQogCmludCBhZGpbMjUxXVsyNTFdPXswfTsKaW50IGRpc3RbMjUxXTsKaW50IHZpc1syNTFdPXswfTsKaW50IGRpc1syNTFdWzI1MV09ezB9OwogCnZvaWQgZGlqa3N0cmEoaW50IG4sIGludCBzKQp7CmludCBjbnQ9MDsKaW50IGksY3VycixuZXdkaXN0LGs7CmZvcihpPTA7aTxuO2krKykKIHsKIHZpc1tpXT0wOwogZGlzdFtpXT1JTkY7CiB9CiAKZGlzdFtzXT0wOwpjdXJyPSBzOwp2aXNbc109MTsKIAp3aGlsZShjbnQhPW4pCnsKIG5ld2Rpc3Q9ZGlzdFtjdXJyXTsKIGZvcihpPTA7aTxuO2krKykKIHsKICBpZihpIT1jdXJyICYmIChhZGpbY3Vycl1baV0rbmV3ZGlzdCk8ZGlzdFtpXSkKICAgZGlzdFtpXT1hZGpbY3Vycl1baV0rbmV3ZGlzdDsKIH0KIAogaW50IG1pbj0xMDAwMDsKIAogZm9yKGk9MDtpPG47aSsrKQogewogIGlmKHZpc1tpXSE9MSAmJiBkaXN0W2ldPG1pbikKICB7CiAgIG1pbj1kaXN0W2ldOwogICBrPWk7CiAgfQogfQogY3Vycj1rOwogdmlzW2tdPTE7CiBjbnQrKzsKfQpmb3IoaT0wO2k8bjtpKyspCiBkaXNbc11baV09ZGlzdFtpXTsKfQogCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJaW50IG4sbSxnLHAscTsKCWNpbj4+bjsKCWludCBpLGosc3JjLGRlc3Q7Cglmb3IoaT0wO2k8bjtpKyspCiAgICB7CiAgICAgZm9yKGo9MDtqPG47aisrKQogICAgIHsKICAgICAgY2luPj5hZGpbaV1bal07CiAgICAgfQogICAgfQogICAgZm9yKGk9MDtpPG47aSsrKQogICAgIGRpamtzdHJhKG4saSk7CiAgICBjaW4+Pm07CiAgICBpbnQgdzsKICAgIHdoaWxlKG0tLSkKICAgIHsKICAgIGNpbj4+c3JjPj5nPj5kZXN0OwogICAgdz1kaXNbc3JjXVtnXSsgZGlzW2ddW2Rlc3RdLWFkaltzcmNdW2Rlc3RdOwogICAgaWYodzwwKQogICAgIHc9MDsKICAgIGNvdXQ8PGRpc1tzcmNdW2ddKyBkaXNbZ11bZGVzdF08PCIgIjw8dzw8ZW5kbDsKICAgIH0KCXJldHVybiAwOwp9IA==
NQowIDEwMDAwMCAwIDEwMDAwMCA1MDAwMAoxMDAwMDAgMCAxIDEwMDAwMCA1MDAwMAoxMDAwMDAgMTAwMDAwIDAgMSA1MDAwMAoxMDAwMDAgMTAwMDAwIDAgMTAwMDAwIDUwMDAwCjEwMDAwMCAxMDAwMDAgMTAwMDAwIDEwMDAwMCAwCjUKMCAxIDIKMSAyIDMKMiAwIDMKMCAzIDIKMiAzIDAK
5
0 100000 0 100000 50000
100000 0 1 100000 50000
100000 100000 0 1 50000
100000 100000 0 100000 50000
100000 100000 100000 100000 0
5
0 1 2
1 2 3
2 0 3
0 3 2
2 3 0