#include<stdio.h>
#include<algorithm>
using namespace std;
int b[10][10];
int n;
int m;
int row[110];
int col[110];
int sz[110];
pair<int,pair<int,int> > p[110];
int v[10][10];
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
int dfs(int a,int s,int c,int d){
	if(a==m)return 1;
	if(s==sz[a])return dfs(a+1,0,row[a+1],col[a+1]);
	for(int i=0;i<4;i++){
		if(c+dx[i]<0||c+dx[i]>=n||d+dy[i]<0||d+dy[i]>=n||v[c+dx[i]][d+dy[i]])continue;
		if(s+b[c+dx[i]][d+dy[i]]>sz[a])continue;
		v[c+dx[i]][d+dy[i]]=1;
		if(dfs(a,s+b[c+dx[i]][d+dy[i]],c+dx[i],d+dy[i]))return 1;
		v[c+dx[i]][d+dy[i]]=0;
	}
	return 0;
}
int main(){
	int a;
	while(scanf("%d",&a),a){
		for(int i=0;i<a;i++)for(int j=0;j<a;j++)scanf("%d",&b[i][j]);
		for(int i=0;i<a;i++)for(int j=0;j<a;j++)v[i][j]=0;
		n=a;
		m=0;
		int SUM=0;
		for(int i=0;i<a;i++)for(int j=0;j<a;j++){
			SUM+=b[i][j];
			if(b[i][j]<0){
				p[m++]=make_pair(-b[i][j],make_pair(i,j));
				v[i][j]=1;
			}
		}
		if(SUM){
			printf("NO\n");continue;
		}
		std::sort(p,p+m);
		for(int i=0;i<m;i++){
			row[i]=p[i].second.first;
			col[i]=p[i].second.second;
			sz[i]=p[i].first;
		}
		int ret=dfs(0,0,row[0],col[0]);
		if(ret)printf("YES\n");
		else printf("NO\n");
	}
}