#include<stdio.h>

//解题思路:录入元素的同时判断是否为上三角矩阵
int main()
{
    int n;
    scanf("%d",&n); //获取n
    int arr[n][n];
    int i,j;
    int flag = 1;
    for(i = 0; i < n; i++)  //输入n*n元素
    {    
        for(j = 0; j < n; j++)
        {
            scanf("%d",&arr[i][j]);
            if(i > j) //i>j时为下三角的元素
            {
                if(arr[i][j] != 0){ //下三角元素中有不是0的
                    flag = 0; //标志不为上三角矩阵                
                    //break 
                }    
            }         
        }
        //if(flag == 0) break;
        //Note: 上面两个break语句其实可以直接退出循环并达成输出正确的结果
        //      但是不满足题目的输入描述:共输入n*n个元素
    }  
    printf("%s",(flag?"YES":"NO"));
    
    return 0;
}