#include <iostream>
#include <cstring>
using namespace std;
//英语 floyd实现 spfa未实现 dijstra未实现
int da[104][104];
int main()
{
int n;
while(cin>>n)
{
memset(da,0,sizeof(da));
for(int i=1;i<n;i++)
{
for(int j=0;j<i;j++)
{
string s;
cin>>s;
int t=0;
if(s=="x")
{
t=-1;
}else
{
for(int i=0;i<s.size();i++)
{
t=t*10+s[i]-'0';
}
}
da[i][j]=t;
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(da[i][j]!=0)
{
da[j][i]=da[i][j];
}
}
}
/*
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<da[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;*/
for(int k=0;k<n;k++)
{
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
if(da[i][k]!=-1 && da[k][j]!=-1)
{
if(da[i][j]==-1)
{
da[i][j]=da[i][k]+da[k][j];
}else
{
da[i][j]=min(da[i][j],da[i][k]+da[k][j]);
}
}
}
}
}
/*
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<da[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;*/
int jg=-1;
for(int j=1;j<n;j++)
{
if(jg==-1 || da[0][j]>jg)
{
jg=da[0][j];
}
}
cout<<jg<<endl;
}
return 0;
}