#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
#include<cmath>
#define NUM 1000
using namespace std;
int n;
bool a[NUM][NUM];
int fan(int x) { //反转函数
if (x == 1)return 0;
else return 1;
}
void one(int x) { //将对角线上的数反转
a[x][x] = fan(a[x][x]);
}
int G() { //求取G值
int sum = 0;
for (int i = 0; i < n; i++) {
sum += a[i][i] * a[i][i];
};
return sum % 2;
}
int main() {
int c[NUM];
int q, cnt = 0;
cin >> n >> q;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j]; //输入
}
}
for (int i = 0; i < q; i++) {
int t;
cin >> t;
if (t != 3) {
int x;
cin >> x;
one(x - 1);
}
else{
c[cnt] = G();
cnt++;
}
}
for (int i = 0; i < cnt; i++) { //打印G值
cout << c[i];
}
}