#include <stdio.h>

int main() 
{
    int row = 0;// row 行 row 列
    while (~scanf("%d", &row))
    {
        int arr[row][row];
        //向数组中输入元素
        int flag = 1;//旗帜
        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < row; j++)
            {
                scanf("%d", &arr[i][j]);
            }
        }
        
        //遍历数组
        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < row; j++)
            {
                //主对角线是 从矩阵左上角 到 右下角的连线
                //判断
                if (i > j)
                {
                    if (arr[i][j] != 0)
                    {
                        printf("NO\n");
                        return 0;//直接结束
                    }
                }
            }
        }
        printf("YES\n");//能走到这里说明 矩阵是 上三角矩阵

        
        
    }
    return 0;
}