#include "meetings.h"
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 998244353
#define POT 4194304
#define INF 1000000019
#define INFL 1000000000000000099LL
#define STALA 3
random_device rd;
mt19937 g(rd());
vector<ll>dzieci[2007],dzieci2[2007];
ll sz[2007],sz2[2007];
ll fnd(ll x,ll y){
	for(ll i=0;i<2007;i++){
		//	dzieci2[i]=dzieci[i];
	//		sz2[i]=sz[i];	
		}
		ll pom=x;
		ll ak=y;
		sz[ak]++;
		vector<ll>odw;
			vector<pair<ll,ll>>v;
			for(ll i=0;i<dzieci[ak].size();i++){
				v.pb({sz[dzieci[ak][i]],dzieci[ak][i]});
			}
			sort(v.begin(),v.end());
			
			for(ll j=0;j<=v.size();j++){
				if(j==v.size()){
					return y;
					//sz[ak]++;
				//	dzieci[ak].pb(pom);
					//sz[pom]=1;
					//ak=2006;
					//break;
				}
				if(v[j].ff>sz[ak]/STALA){
					ll pom=fnd(x,v[j].ss);
					if(pom!=v[j].ss){
						return pom;
					}
					else{
						ll pom2=Query(pom,x,y);
						if(pom2==y){
						//	sz[y]--;
						//	return y;
						continue;
						}
						else if(pom2==pom){
							return pom;
						}
						else if(pom2==x){
							ll pom2=v[j].ss;
							dzieci[ak].erase(find(dzieci[ak].begin(),dzieci[ak].end(),v[j].ss));
							//dzieci[ak].pb(pom);
							dzieci[x].pb(pom2);
							sz[x]=sz[pom2];
							//sz[ak]++;
							return ak;
						//	ak=2006;
						//	break;
						}
						ll pom3=v[j].ss;
						dzieci[ak].erase(find(dzieci[ak].begin(),dzieci[ak].end(),v[j].ss));
						dzieci[ak].pb(pom2);
						//dzieci[ans].pb(pom);
						dzieci[pom2].pb(pom3);
						sz[pom2]=sz[pom3]+1;
					//	sz[pom]=1;
						sz[ak]+=2;
						for(ll k : odw)
							sz[k]++;
						//ak=2006;
						return pom2;
						
					}
				}
				ll ans=Query(pom,v[j].ss,ak);
				if(ans==pom){
					ll pom2=v[j].ss;
					dzieci[ak].erase(find(dzieci[ak].begin(),dzieci[ak].end(),v[j].ss));
					//dzieci[ak].pb(pom);
					dzieci[pom].pb(pom2);
					sz[pom]=sz[pom2];
					//sz[ak]++;
					return ak;
				//	ak=2006;
				//	break;
				}
				if(ans==ak)
					continue;
				if(ans==v[j].ss){
					sz[ak]++;
					return fnd(pom,v[j].ss);
				//	ak=v[j].ss;
					//break;
				}
				ll pom2=v[j].ss;
				dzieci[ak].erase(find(dzieci[ak].begin(),dzieci[ak].end(),v[j].ss));
				dzieci[ak].pb(ans);
				//dzieci[ans].pb(pom);
				dzieci[ans].pb(pom2);
				sz[ans]=sz[pom2]+1;
			//	sz[pom]=1;
				sz[ak]+=2;
				for(ll k : odw)
					sz[k]++;
				//ak=2006;
				return ans;
				//break;
			}
		//	odw.pb(ak);
		//if(ak!=2006)
		//	dzieci[ak].pb(pom);
	//return y;
}
void Solve(int n){
	vector<ll>dodod;
	for(ll i=1;i<n;i++){
		dodod.pb(i);
	}
	shuffle(dodod.begin(),dodod.end(),rd);
	sz[0]=1;
	while(dodod.size()){
		//cout<<"\n\n";
		//for(ll i=0;i<n;i++){
		//	for(ll j : dzieci[i])
		//		cout<<i<<" "<<j<<"\n";
		//}cout<<"\n\n";
		if(sz[dodod.back()]){
			dodod.pop_back();
			continue;
		}
		ll pom=fnd(dodod.back(),0);
		sz[pom]++;
		dzieci[pom].pb(dodod.back());
		sz[dodod.back()]++;
		dodod.pop_back();
	}
	for(ll i=0;i<n;i++){
		for(ll j : dzieci[i])
			Bridge(min(i,j),max(i,j));
	}
}
Compilation message (stderr)
meetings.cpp: In function 'long long int fnd(long long int, long long int)':
meetings.cpp:124:1: warning: control reaches end of non-void function [-Wreturn-type]
  124 | }
      | ^| # | 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... |