#include "meetings.h"
#include <bits/stdc++.h>
using namespace std;
bool checked[2002][2002];
int ans[303][303][303];
int n, cnt, c[2002];
void answer(int x, int y){
if(x > y) swap(x, y);
Bridge(x, y);
}
void qry(int x, int y, int z){
int r = Query(x, y, z);
bool fl = 0;
if(r != x && c[x] < 18){
for(int k = 0; k < n; k++){
if(k == x || k == y || k == z || k == r) continue;
int r1;
if(ans[x][k][r]) r1 = ans[x][k][r];
else r1 = Query(x, k, r);
ans[x][k][r] = r1;
ans[x][r][k] = r1;
ans[k][x][r] = r1;
ans[k][r][x] = r1;
ans[r][k][x] = r1;
ans[r][x][k] = r1;
if(r1 == k){
fl = 1;
qry(x, r, k);
}
}
if(!fl && !checked[x][r]){
answer(x, r);
cnt++;
c[x]++;
c[r]++;
checked[x][r] = checked[r][x] = 1;
}
}
if(r != y && c[y] < 18){
fl = 0;
for(int k = 0; k < n; k++){
if(k == x || k == y || k == z || k == r) continue;
int r1;
if(ans[y][k][r]) r1 = ans[y][k][r];
else r1 = Query(y, k, r);
ans[y][k][r] = r1;
ans[y][r][k] = r1;
ans[k][y][r] = r1;
ans[k][r][y] = r1;
ans[r][k][y] = r1;
ans[r][y][k] = r1;
if(r1 == k){
fl = 1;
qry(y, r, k);
}
}
if(!fl && !checked[y][r]){
answer(y, r);
c[y]++;
c[r]++;
checked[y][r] = checked[r][y] = 1;
cnt++;
}
}
if(r != z && c[z] < 18){
fl = 0;
for(int k = 0; k < n; k++){
if(k == x || k == y || k == z || k == r) continue;
int r1;
if(ans[z][k][r]) r1 = ans[z][k][r];
else r1 = Query(z, k, r);
ans[z][k][r] = r1;
ans[z][r][k] = r1;
ans[k][z][r] = r1;
ans[k][r][z] = r1;
ans[r][k][z] = r1;
ans[r][z][k] = r1;
if(r1 == k){
fl = 1;
qry(z, r, k);
}
}
if(!fl && !checked[r][z]){
answer(z, r);
cnt++;
c[z]++;
c[r]++;
checked[z][r] = checked[r][z] = 1;
}
}
}
void Solve(int N) {
int cnt = 0;
n = N;
vector<pair<int,int>> edges;
for(int i = 0; i < N && cnt != N - 1; i++){
for(int j = i + 1; j < N && cnt != N - 1; j++){
for(int z = j + 1; z < N && cnt != N - 1; z++){
qry(i, j ,z);
}
}
}
}