#include <bits/stdc++.h>
using namespace std;
extern "C" bool inside_shape(int x, int y);
inline int get_left_point(int x, int j) {
int l = 1, r = j;
while (l < r) {
int mid = (l + r) >> 1;
if (inside_shape(x, mid))
r = mid;
else
l = mid + 1;
}
return l;
}
inline int get_right_point(int x, int j, int N) {
int l = j, r = N;
while (l < r) {
int mid = (l + r + 1) >> 1;
if (inside_shape(x, mid))
l = mid;
else
r = mid - 1;
}
return l;
}
inline int get_up_point(int x, int i) {
int l = 1, r = i;
while (l < r) {
int mid = (l + r) >> 1;
if (inside_shape(mid, x))
r = mid;
else
l = mid + 1;
}
return l;
}
inline int get_down_point(int x, int i, int N) {
int l = i, r = N;
while (l < r) {
int mid = (l + r + 1) >> 1;
if (inside_shape(mid, x))
l = mid;
else
r = mid - 1;
}
return l;
}
extern "C" bool am_i_square(int N, int Q) {
int add = N / 25;
for (int i = 1; i <= N; i += add)
for (int j = 1; j <= N; j += add)
if (inside_shape(i, j)) {
int l = get_left_point(i, j), r = get_right_point(i, j, N);
int u = get_up_point(j, i), d = get_down_point(j, i, N);
return r - l == d - u;
}
}