/********************************
*MAHBUBCSEJU                    *
*CSE 22                         *
*JAHANGIRNAGAR UNIVERSITY       *
*TIMUS:164273FU                 *
*UVA>>LIGHTOJ>>HUST:mahbubcseju */
#include<bits/stdc++.h>
#include<string.h>
#include<stdio.h>
#define ll long long int
#define ull unsigned long long int
#define I(a) scanf("%d",&a)
#define I2(a,b) scanf("%d%d",&a,&b)
#define I3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define L(a) scanf("%lld",&a)
#define L2(a,b) scanf("%lld%lld",&a,&b)
#define L3(a,b,c) scanf("%lld%lld%lld",&a,&b,&c)
#define PI(a) printf("%d",a)
#define PL(a) printf("%lld",a)
#define PT(t) printf("Case %d: ",t)
#define PB push_back
#define x first
#define y second
#define xx first.first
#define xy first.second
#define yx second.first
#define yy second.second
#define SC scanf
#define PC printf
#define NL printf("\n")
#define SET(a) memset(a,0,sizeof a)
#define SETR(a) memset(a,-1,sizeof a)
#define SZ(a) ((int)a.size())-1
#define f(i,a,b) for(int i=a;i<=b; i++)
#define fr(i,a,b) for(int i=a;i<=b; i++)
#define frr(i,a,b) for(int i=a;i>=b; i--)
#define frv(i,a)  for(int i=0;i<a.size();i++)
#define pi 2.0*acos(0.0)
#define R(a) freopen(a, "r", stdin);
#define W(a) freopen(a, "w", stdout);
#define CB(x) __builtin_popcount(x)
#define STN(a) stringtonumber<ll>(a)
#define lol printf("BUG\n")
#define Endl "\n"
#define mk make_pair
using namespace std;
template <class T> inline T BM(T p, T e, T M)
{
    ll ret = 1;
    for (; e > 0; e >>= 1)
    {
        if (e & 1) ret = (ret * p) % M;
        p = (p * p) % M;
    }
    return (T)ret;
}
template <class T> inline T gcd(T a, T b)
{
    if (b == 0)return a;
    return gcd(b, a % b);
}
template <class T> inline T mdINV(T a, T M)
{
    return BM(a, M - 2, M);
}
template <class T> inline T PW(T p, T e)
{
    ll ret = 1;
    for (; e > 0; e >>= 1)
    {
        if (e & 1) ret = (ret * p);
        p = (p * p);
    }
    return (T)ret;
}
template <class T>string NTS ( T Number )
{
    stringstream ss;
    ss << Number;
    return ss.str();
}
template <class T>T stringtonumber ( const string &Text )
{
    istringstream ss(Text);
    T result;
    return ss >> result ? result : 0;
}
template <class T>bool ISLEFT ( T a, T b, T c)
{
    if (((a.xx - b.xx) * (b.yy - c.yy) - (b.xx - c.xx) * (a.yy - b.yy)) < 0.0)return 1; //Uporer dike //A,b,c, x okkher ordera sorted
    else return 0;
}

#define md 1000000007ll
#define  mx 200000
#define base 193ll

typedef pair<ll,ll >P;
//////////////////////////
/////////////////////////

int main()
{


    int n;
    I(n);
    ll a[n+2][n+2];
    ll ar[n+2][n+2];
    SET(ar);
    for(int i=1; i<=n; i++)
    {

        fr(j,1,n)
        {


            int x;
            I(x);
            if(x>0)a[i][j]=x;
            else a[i][j]=2e18;
            ar[i][j]=a[i][j];
            if(ar[i][j]==2e18)ar[i][j]=0;
        }
        a[i][i]=0;
    }
    bool fl=0;
    fr(i,1,n)
    fr(j,1,n)
    fr(k,1,n)
    {
        if(a[j][k]>a[j][i]+a[i][k])
        {
            a[j][k]=a[j][i]+a[i][k];

            if(ar[j][k]>a[j][k])
            {
                fl=1;
                break;
            }

        }
    }

    if(fl)PI(-1),NL;

    else
    {

        vector< pair<ll,P>  >v;
        fr(i,1,n)
        fr(j,1,n)
        {
            if(ar[i][j])v.PB(mk(ar[i][j],mk(i,j)));
        }
        sort(v.begin(),v.end());
        reverse(v.begin(),v.end());

        for(int i=0; i<v.size(); i++)
        {
            int x=v[i].yx;
            int y=v[i].yy;
            ll kop=v[i].x;
            // cerr<<kop<<Endl;
            for(int k=1; k<=n; k++)
            {
                // if(kop==3)cerr<<ar[1][2]<<" "<<ar[2][3]<<endl;
                if(!(x==k||y==k)&&ar[x][k]+ar[k][y]==ar[x][y]&&ar[x][k]&&ar[k][y])
                {
                    //cerr<<x<<" "<<y<<" "<<k<<Endl;
                    ar[x][y]=0;
                    ar[y][x]=0;
                    break;
                }
            }
        }

        ll sum=0;

        fr(i,1,n)fr(j,1,n)sum+=ar[i][j];
        PL(sum/2),NL;
    }

    return 0;
}


Measured memory_bytes: 5620