#include <stdio.h>
#define N 200005
int c[N], size[N];
int find(int x) {
if (x != c[x])
c[x] = find(c[x]);
return c[x];
}
int unite(int x, int y) {
x = find(x);
y = find(y);
if (x == y) return 0;
if (size[x] < size[y]) {
int temp = x;
x = y;
y = temp;
}
c[y] = x;
size[x] += size[y];
return 1;
}
void solve() {
int n;
for (int i = 0; i < N; ++i) {
c[i] = i;
size[i] = 1;
}
int s_indices[N], s_count = 0;
for (int i = 0; i < n; ++i) {
int u, v;
if (unite(u, v)) {
s_indices[s_count++] = i + 1;
}
}
for (int i = 0; i < s_count; ++i)
}
int main() {
int t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE4gMjAwMDA1CgppbnQgY1tOXSwgc2l6ZVtOXTsKCmludCBmaW5kKGludCB4KSB7CiAgICBpZiAoeCAhPSBjW3hdKQogICAgICAgIGNbeF0gPSBmaW5kKGNbeF0pOwogICAgcmV0dXJuIGNbeF07Cn0KCmludCB1bml0ZShpbnQgeCwgaW50IHkpIHsKICAgIHggPSBmaW5kKHgpOwogICAgeSA9IGZpbmQoeSk7CiAgICBpZiAoeCA9PSB5KSByZXR1cm4gMDsKICAgIGlmIChzaXplW3hdIDwgc2l6ZVt5XSkgewogICAgICAgIGludCB0ZW1wID0geDsKICAgICAgICB4ID0geTsKICAgICAgICB5ID0gdGVtcDsKICAgIH0KICAgIGNbeV0gPSB4OwogICAgc2l6ZVt4XSArPSBzaXplW3ldOwogICAgcmV0dXJuIDE7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBpbnQgbjsKICAgIHNjYW5mKCIlZCIsICZuKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47ICsraSkgewogICAgICAgIGNbaV0gPSBpOwogICAgICAgIHNpemVbaV0gPSAxOwogICAgfQoKICAgIGludCBzX2luZGljZXNbTl0sIHNfY291bnQgPSAwOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKSB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgc2NhbmYoIiVkICVkIiwgJnUsICZ2KTsKICAgICAgICBpZiAodW5pdGUodSwgdikpIHsKICAgICAgICAgICAgc19pbmRpY2VzW3NfY291bnQrK10gPSBpICsgMTsKICAgICAgICB9CiAgICB9CgogICAgcHJpbnRmKCIlZFxuIiwgc19jb3VudCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHNfY291bnQ7ICsraSkKICAgICAgICBwcmludGYoIiVkICIsIHNfaW5kaWNlc1tpXSk7CiAgICBwcmludGYoIlxuIik7Cn0KCmludCBtYWluKCkgewogICAgaW50IHQ7CiAgICBzY2FuZigiJWQiLCAmdCk7CiAgICB3aGlsZSAodC0tKSB7CiAgICAgICAgc29sdmUoKTsKICAgIH0KICAgIHJldHVybiAwOwp9Cg==