#include <iostream>
#include <vector>
#include <string>
#include <set>
#include <map>
#include <algorithm>
#include <sstream>
#include <queue>
#include <bitset>
#include <utility>
#include <list>
#include <numeric>

#include <cstdio>
#include <cmath>
#include <cctype>
using namespace std;

#define REP(i,n) for(__typeof(n) i=0; i<(n); ++i)
#define FOR(i,a,b) for(__typeof(b) i=a; i<(b); ++i)
#define FOREACH(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it)

typedef long long ll;
const int MAXN=200;
int main() {
    double a[MAXN][MAXN], b[MAXN][MAXN];
    int t; scanf("%d", &t);
    cout.setf(ios::fixed, ios::floatfield);
    cout.precision(6);
    for (int cases=0; cases<t; cases++) {
        int n, x;
        scanf("\n%d", &n);
        for (int i=0; i<n; i++) for (int j=0; j<n; j++) {
            scanf("%d", &x);
            a[i][j]=x*0.01;
        }
        vector<bool> account(n, false);
        int m;
        scanf("%d", &m);
        for (int i=0; i<m; i++) {
            scanf("%d", &x);
            account[x-1]=true;
        }
        int s; scanf("%d", &s);

        for (int k=0; k<n; k++)
            for (int i=0; i<n; i++) for (int j=0; j<n; j++)
                a[i][j]=max(a[i][j], a[i][k]*a[k][j]);
        for (int i=0; i<n; i++) for (int j=0; j<n; j++) 
            if (a[i][j]>0)
                b[i][j]=1/a[i][j];
            else b[i][j]=1e400;
        
        for (int k=0; k<n; k++) if (account[k])
            for (int i=0; i<n; i++) for (int j=0; j<n; j++)
                b[i][j]=min(b[i][j], b[i][k]+b[k][j]);
        cout<<b[0][1]*s<<endl;
    }
}
