#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <stack>
#include <algorithm>
#include <cstdio>
using namespace std;
vector<int> hori[1002];
vector<int> verti[1002];
int flip[1002][1002];
int p[1002][1002];
int ans[1002][1002];
int main() {
ios::sync_with_stdio(false);
int n,q;
cin>>n>>q;
int a,b,c,d;
for(int i = 0; i < q; i++){
cin>>a>>b>>c>>d;
flip[a-1][b-1] = 1 - flip[a-1][b-1];
flip[a-1][d] = 1 - flip[a-1][d];
flip[c][b-1] = 1 - flip[c][b-1];
flip[c][d] = 1 - flip[c][d];
}
int count = 0;
for(int i = 1; i <=n; i++) {
for(int j = 1; j <=n; j++) {
if(flip[i][j]) {
hori[j].push_back(i);
verti[i].push_back(j);
count = 1 - count;
//cerr<<i<<" "<<j<<endl;
}
}
}
//cerr<<1<<endl;
for(int i = 1; i <= n; i++) {
int cur = n, end = hori[i].size();
int count1 = 0;
while(end!=0 && hori[i].size() > 0) {
//cerr<<end<<" "<<hori[i][end]<<endl;
end--;
while(hori[i][end] < cur) {
p[cur][i] = count1;
cur--;
}
count1++;
}
while(cur!=0) {
p[cur][i] = count1;
cur--;
}
}
/*for(int i = 1; i <=n; i++) {
for(int j = 1; j <=n; j++) {
cerr<<p[i][j]<<" ";
}
cerr<<endl;
}*/
ans[1][1] = count;
for(int i = 2; i <=n; i++) {
ans[i][1] = (ans[i-1][1] + verti[i-1].size()) %2;
}
for(int i = 1; i <=n; i++) {
for(int j = 2; j <=n; j++) {
ans[i][j] = (ans[i][j-1] + p[i][j-1]) % 2;
}
}
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
cout<<ans[i][j];
}
cout<<endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnN0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxjc3RkaW8+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAp2ZWN0b3I8aW50PiBob3JpWzEwMDJdOwp2ZWN0b3I8aW50PiB2ZXJ0aVsxMDAyXTsKaW50IGZsaXBbMTAwMl1bMTAwMl07CmludCBwWzEwMDJdWzEwMDJdOwppbnQgYW5zWzEwMDJdWzEwMDJdOwogCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJaW50IG4scTsKCWNpbj4+bj4+cTsKCWludCBhLGIsYyxkOwoJZm9yKGludCBpID0gMDsgaSA8IHE7IGkrKyl7CgkJY2luPj5hPj5iPj5jPj5kOwoJCWZsaXBbYS0xXVtiLTFdID0gMSAtIGZsaXBbYS0xXVtiLTFdOwoJCWZsaXBbYS0xXVtkXSA9IDEgLSBmbGlwW2EtMV1bZF07CgkJZmxpcFtjXVtiLTFdID0gMSAtIGZsaXBbY11bYi0xXTsKCQlmbGlwW2NdW2RdID0gMSAtIGZsaXBbY11bZF07Cgl9CglpbnQgY291bnQgPSAwOwoJZm9yKGludCBpID0gMTsgaSA8PW47IGkrKykgewoJCWZvcihpbnQgaiA9IDE7IGogPD1uOyBqKyspIHsKCQkJaWYoZmxpcFtpXVtqXSkgewoJCQkJaG9yaVtqXS5wdXNoX2JhY2soaSk7CgkJCQl2ZXJ0aVtpXS5wdXNoX2JhY2soaik7CgkJCQljb3VudCA9IDEgLSBjb3VudDsKCQkJCS8vY2Vycjw8aTw8IiAiPDxqPDxlbmRsOwoJCQl9CgkJfQoJfQoJLy9jZXJyPDwxPDxlbmRsOwoJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKCQlpbnQgY3VyID0gbiwgZW5kID0gaG9yaVtpXS5zaXplKCk7CgkJaW50IGNvdW50MSA9IDA7CgkJd2hpbGUoZW5kIT0wICYmIGhvcmlbaV0uc2l6ZSgpID4gMCkgewoJCQkvL2NlcnI8PGVuZDw8IiAiPDxob3JpW2ldW2VuZF08PGVuZGw7CgkJCWVuZC0tOwoJCQl3aGlsZShob3JpW2ldW2VuZF0gPCBjdXIpIHsKCQkJCXBbY3VyXVtpXSA9IGNvdW50MTsKCQkJCWN1ci0tOwoJCQl9CgkJCWNvdW50MSsrOwoJCX0KCQl3aGlsZShjdXIhPTApIHsKCQkJcFtjdXJdW2ldID0gY291bnQxOwoJCQljdXItLTsKCQl9CiAKCX0KCS8qZm9yKGludCBpID0gMTsgaSA8PW47IGkrKykgewoJCWZvcihpbnQgaiA9IDE7IGogPD1uOyBqKyspIHsKCQkJY2Vycjw8cFtpXVtqXTw8IiAiOwoJCX0KCQljZXJyPDxlbmRsOwoJfSovCglhbnNbMV1bMV0gPSBjb3VudDsKCWZvcihpbnQgaSA9IDI7IGkgPD1uOyBpKyspIHsKCQlhbnNbaV1bMV0gPSAoYW5zW2ktMV1bMV0gKyB2ZXJ0aVtpLTFdLnNpemUoKSkgJTI7Cgl9Cglmb3IoaW50IGkgPSAxOyBpIDw9bjsgaSsrKSB7CgkJZm9yKGludCBqID0gMjsgaiA8PW47IGorKykgewoJCQlhbnNbaV1bal0gPSAoYW5zW2ldW2otMV0gKyBwW2ldW2otMV0pICUgMjsKCQl9Cgl9Cglmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCWZvcihpbnQgaiA9IDE7IGogPD0gbjsgaisrKSB7CgkJCWNvdXQ8PGFuc1tpXVtqXTsKCQl9CgkJY291dDw8ZW5kbDsKCX0KIAp9CiA=