#include<bits/stdc++.h>
using namespace std;
long long a[1005][1005];
long long b[1005][1005];
long long c[1005][1005];
long long n, q;
void vo(long long a1, long long b, long long x, long long y, long long v)
{
a1++;b++;x++;y++;
for(long long i = a1; i <= b; i++)
{
for(long long j = x; j <= y; j++)
{
a[i][j] += v;
// cout << "i:" << i << endl << "j:" << j << endl;
}
}
}
bool if_same()
{
for(long long i = 1; i <= n; i++)
{
for(long long j = 1; j <= n; j++)
{
if(c[i][j] != b[i][j])
{
return false;
}
}
}
return true;
}
void jzc()
{
long long x = 1, y = 1;
for(long long i = 1; i <= n; i++)
{
for(long long j = 1; j <= n; j++)
{
long long sum = 0;
for(long long k = 1; k <= n; k++)
{
sum += a[i][k] * a[k][j];
// cout << "sum: " << sum << endl;
}
c[x][y] = sum;
y++;
}
x++;
y = 1;
}
}
int main()
{
cin >> n >> q;
for(long long i = 1; i <= n; i++)
{
for(long long j = 1; j <= n; j++)
{
cin >> a[i][j];
}
}
for(long long i = 1; i <= q; i++)
{
long long op;
cin >> op;
if(op == 1)
{
long long a, b, x, y, v;
cin >> a >> b >> x >> y >> v;
vo(a, b, x, y, v);
}
else
{
for(long long j = 1; j <= n; j++)
{
for(long long k = 1; k <= n; k++)
{
cin >> b[j][k];
}
}
jzc();
if(if_same() == true)
{
cout << "yes" << endl;
}
else
{
cout << "no" << endl;
/* for(int x = 1; x <= n; x++)
{
for(int y = 1; y <= n; y++)
{
cout << c[x][y] << " ";
}
cout << endl;
}*/
}
}
}
return 0;
}
/*
---------------------------------------------------------------------------------
|a[1][1] * a[1][1] + a[2][1] * a[1][2] | a[1][1] * a[2][1] + a[2][1] * a[2][2]|
---------------------------------------------------------------------------------
|a[2][1] * a[1][1] + a[2][2] * a[1][2] | a[2][1] * a[2][1] + a[2][2] * a[2][2]|
---------------------------------------------------------------------------------
1 2
2 1
1 2
2 1
*/
/*
5 4
4 5
5 5
4 6
*/
有位dalao给了我数据,数据过了但评测没过
输入:
2 5
1 2
2 1
2
5 4
4 5
2
4 5
5 4
1 0 1 1 1 1
2
7 9
6 10
2
5 4
4 5
输出:
yes
no
yes
no