#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair P; struct unionfind{ vector par, sz; unionfind() {} unionfind(int n):par(n), sz(n, 1){ for(int i=0; isz[y]) swap(x, y); par[x]=y; sz[y]+=sz[x]; } bool same(int x, int y){ return find(x)==find(y); } int size(int x){ return sz[find(x)]; } }; int main() { int n; cin>>n; int a[10000], b[10000]; string s[10000]; int ind[10000]; for(int i=0; i>a[i]>>b[i]; a[i]--; b[i]--; cin>>s[i]; ind[i]=i; } sort(ind, ind+n*(n-1)/2, [&](int i, int j){ return (s[i].size()==s[j].size())?(s[i]