n = int(input())  # 读取矩阵阶数
is_upper_triangular = True  # 假设是上三角矩阵

for i in range(n):
    row = list(map(int, input().split()))
    for j in range(i):  # 只检查主对角线以下的元素(j<i)
        if row[j] != 0:
            is_upper_triangular = False
            break
    if not is_upper_triangular:
        break

if is_upper_triangular:
    print("YES")
else:
    print("NO")



        

两层循环,第一层循环i行,第二层循环是每一行的数字,只需要在第二层循环里面判断前i个数字是否是0即可