#include<iostream>
using namespace std;
int map[105][105];
int vis[105],d[105];
int main()
{
int n,a;
char r[100];
while(cin>>n)
{
for(int i=0;i<105;i++)
{
for(int j=0;j<105;j++)
{
map[i][j]=0xFFFF;
if(i==j)
map[i][j]=0;
}
}
memset(vis,0,sizeof(vis));
for(int i=2;i<=n;i++)
{
for(int j=1;j<i;j++)
{
cin>>r;
if(r[0]!='x')
{
map[i][j]=map[j][i]=atoi(r);
}
else
map[i][j]=0xFFFF;
}
}
vis[1]=1;
for(int i=1;i<=n;i++)
d[i]=map[1][i];
int max=0xFFFF;
for(int i=1;i<n;i++)
{
int temp=max,u;
for(int j=1;j<=n;j++)
{
if(!vis[j]&&d[j]<temp)
{
u=j;
temp=d[j];
}
}
vis[u]=1;
for(int j=1;j<=n;j++)
if(!vis[j])
{
if(d[j]>d[u]+map[u][j])
d[j]=map[u][j]+d[u];
}
}
max=0;
// for(int i=1;i<=n;i++)
// cout<<d[i]<<' ';
// system("pause");
for(int i=1;i<=n;i++)
if(d[i]>max)
max=d[i];
cout<<max<<endl;
}
return 0;
}