#include <stdio.h>

int main()
{

	int n = 0;
	scanf("%d", &n);
	int s = 0;
	int count = 0;
	int arr[100][100] = { 0 };
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			scanf("%d", &arr[i][j]);
		}
	}
	for (int i = 1; i < n; i++)
	{
		for (int j = 0; j < i; j++)
		{
			//主要他不等于 0 了 那肯定就不是上三角矩阵了
			if (arr[i][j] != 0)
			{
				s = 1;
				goto a;
			}
		}
		//既然有一个不等于了 那也跳出去 虽然可以用GO to
	}
	a:
	if (s == 1)
	{
		printf("NO\n");
	}
	else
	{
		printf("YES\n");
	}

	return 0;
}