#include "island.h"
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
using pii=pair<int,int>;
namespace {
  const int lim=500;
  vector<int>v[lim];
  int haveedge[lim][lim];
  vector<int>roots;
  int isroot[lim];
  vector<pii>ans;
  int parent[lim];
  int find(int i){
    if(i==parent[i])return i;
    return parent[i]=find(parent[i]);
  }
  void unite(int i,int j){
    parent[find(i)]=find(j);
  }
}
void solve(int n, int L) {
  for(int i=1;i<=n;i++)parent[i]=i;
  roots.pb(1);
  for(int i=2;i<=n;i++){
    int res=query(i,1);
    if(res<i){
      v[i].pb(res);
      v[res].pb(i);
      haveedge[i][res]=haveedge[res][i]=1;
      ans.pb({res,i});
      unite(i,res);
    }else{
      roots.pb(i);
      isroot[i]=1;
    }
  }
  for(int i=2;i<=n;i++){
    if(isroot[i])continue;
    for(int k=2;k<=n-1;k++){
      int res=query(i,k);
      if(res<i){
        if(find(i)==find(res)){
          break;
        }else{
          ans.pb({res,i});
        }
      }else break;
    }
  }
  for(auto[x,y]:ans){
    answer(x,y);
  }
  /*
  int variable_example = query(1, 1);
  for (int i = 2; i <= N; i++) {
    answer(1, i);
  }
  */
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |