#include <bits/stdc++.h>
#include "voltage.h"
using namespace std;
const int N = 505;
vector<int> in[N], out[N];
bool solve(int n, int m) {
vector<int> gol;
auto adaugabil = [&] (int p) -> bool {
vector<int> x(n, 1);
for (auto i : in[p]) {
x[i] = 0;
}
auto y = x;
x[p] = 0;
y[p] = 1;
return query(x, y) == 0;
};
for (int i = 0; i < n; i ++) {
if (adaugabil(i)) {
gol.push_back(i);
}
}
vector<bool> skib(n);
int nrq = 0;
while (!gol.empty()) {
auto p = gol.back();
gol.pop_back();
if (skib[p]) {
return false;
}
skib[p] = true;
while (1) {
int pos = -1;
for (int pas = 1 << 10; pas; pas >>= 1) {
if (pos + pas > n) {
continue;
}
vector<int> x(n, 0);
for (int j = pos + pas; j < n; j ++) {
x[j] = 1;
}
for (auto j : in[p]) {
x[j] = 0;
}
for (auto j : out[p]) {
x[j] = 1;
}
auto y = x;
x[p] = 0;
y[p] = 1;
if (query(x, y) == 0) {
pos += pas;
}
}
if (pos == n) {
break;
}
nrq ++;
if (nrq > m) {
return false;
}
in[pos].push_back(p);
out[p].push_back(pos);
if (adaugabil(pos)) {
gol.push_back(pos);
}
}
}
for (int i = 0; i < n; i ++) {
if (skib[i] == false) {
return false;
}
}
for (int i = 0; i < n; i ++) {
for (auto j : out[i]) {
answer(i, j);
}
}
return true;
}