#include <bits/stdc++.h>
#include "vision.h"
using namespace std;
void construct_network(int H, int W, int K) {
int l = 0; int r = H*W-1;
int id1 = 0;
while (l <= r) {
int mid = (l+r)/2;
vector <int> res(mid+1);
iota(res.begin(),res.end(),0);
if (add_or(res) == 0) {
id1 = mid;
l = mid + 1;
} else {
r = mid -1;
}
}
// cout << "id1 --- " << id1 << endl;
l = id1+1; r = H*W-1;
int id2 = id1+1;
while (l <= r) {
int mid = (l+r)/2;
vector <int> res(mid+1);
iota(res.begin(),res.end(),0);
if (add_or(res) == 0) {
id2 = mid;
l = mid + 1;
} else {
r = mid - 1;
}
}
// cout << " id2 --- " << id2 << endl;
int x1 = id1/W; int y1 = id1%W;
int x2 = id2/W; int y2 = id2%W;
if ((abs(x1-x2)+abs(y1-y2)) == K) {
add_xor({id1});
} else {
add_xor({id1,id2});
}
}