#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1010;
const long double inf = 1e30;
long double A[MAXN], B[MAXN];
priority_queue<pair<long double, int>, vector<pair<long double, int> >,
               greater<pair<long double, int> > >
    q;
int n;
long double P[MAXN][MAXN];
void load() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++) {
      int a;
      scanf("%d", &a);
      P[i][j] = (long double)a / 100.0;
    }
}
inline long double ans(long double a, long double b) {
  return (b + 1.0) / (1.0 - a);
}
bool bio[MAXN];
void solve() {
  q.push(pair<long double, int>(0.0, n - 1));
  for (int i = 0; i < n; i++) {
    A[i] = 1;
    B[i] = 0;
  }
  while (!q.empty()) {
    int u = q.top().second;
    long double ansu = q.top().first;
    q.pop();
    if (bio[u]) continue;
    bio[u] = true;
    if (u == 0) {
      printf("%.10f\n", (double)ansu);
      return;
    }
    for (int i = 0; i < n; i++) {
      if (bio[i]) continue;
      long double newA = A[i] * (1.0 - P[i][u]);
      long double newB = B[i] + A[i] * P[i][u] * ansu;
      A[i] = newA;
      B[i] = newB;
      if (A[i] < 1 - 1e-6) q.push(pair<long double, int>(ans(newA, newB), i));
    }
  }
}
int main() {
  load();
  solve();
  return 0;
}
