#include <bits/stdc++.h>
#include "altar.h"
#define pb emplace_back
#define fst first
#define scd second
#define mkp make_pair
#define uint unsigned
#define mems(a, x) memset((a), (x), sizeof(a))
using namespace std;
typedef long long ll;
typedef double db;
typedef unsigned long long ull;
typedef long double ldb;
typedef pair<ll, ll> pii;
const int maxn = 310;
int a[maxn][maxn];
bool ask(int i, int j) {
if (a[i][j] != -1) {
return a[i][j];
}
int x = sense(i, j);
a[i][j] = x;
a[j][i] = x ^ 1;
return x;
}
int alter(int n) {
mems(a, -1);
vector<int> vc;
for (int i = 1; i <= n; ++i) {
vc.pb(i);
}
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
while (1) {
shuffle(vc.begin(), vc.end(), rnd);
vector<int> nv;
for (int i = 1; i < (int)vc.size(); ++i) {
if (ask(vc[i], vc[0])) {
nv.pb(vc[i]);
}
}
if (nv.empty()) {
return vc[0];
}
vc = nv;
}
}