#include <stdio.h>
#define N 200005
int c[N], size[N], vis[N], vid = 0;
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() {
++vid;
int n;
int s_indices[N], s_count = 0;
for (int i = 0; i < n; ++i) {
int u, v;
if (vis[u] != vid) {
c[u] = u;
size[u] = 1;
vis[u] = vid;
}
if (vis[v] != vid) {
c[v] = v;
size[v] = 1;
vis[v] = vid;
}
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+CgojZGVmaW5lIE4gMjAwMDA1CgppbnQgY1tOXSwgc2l6ZVtOXSwgdmlzW05dLCB2aWQgPSAwOwoKaW50IGZpbmQoaW50IHgpIHsKICAgIGlmICh4ICE9IGNbeF0pCiAgICAgICAgY1t4XSA9IGZpbmQoY1t4XSk7CiAgICByZXR1cm4gY1t4XTsKfQoKaW50IHVuaXRlKGludCB4LCBpbnQgeSkgewogICAgeCA9IGZpbmQoeCk7CiAgICB5ID0gZmluZCh5KTsKICAgIGlmICh4ID09IHkpIHJldHVybiAwOwogICAgaWYgKHNpemVbeF0gPCBzaXplW3ldKSB7CiAgICAgICAgaW50IHRlbXAgPSB4OwogICAgICAgIHggPSB5OwogICAgICAgIHkgPSB0ZW1wOwogICAgfQogICAgY1t5XSA9IHg7CiAgICBzaXplW3hdICs9IHNpemVbeV07CiAgICByZXR1cm4gMTsKfQoKdm9pZCBzb2x2ZSgpIHsKICAgICsrdmlkOwogICAgaW50IG47CiAgICBzY2FuZigiJWQiLCAmbik7CiAgICBpbnQgc19pbmRpY2VzW05dLCBzX2NvdW50ID0gMDsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkgewogICAgICAgIGludCB1LCB2OwogICAgICAgIHNjYW5mKCIlZCAlZCIsICZ1LCAmdik7CgogICAgICAgIGlmICh2aXNbdV0gIT0gdmlkKSB7CiAgICAgICAgICAgIGNbdV0gPSB1OwogICAgICAgICAgICBzaXplW3VdID0gMTsKICAgICAgICAgICAgdmlzW3VdID0gdmlkOwogICAgICAgIH0KCiAgICAgICAgaWYgKHZpc1t2XSAhPSB2aWQpIHsKICAgICAgICAgICAgY1t2XSA9IHY7CiAgICAgICAgICAgIHNpemVbdl0gPSAxOwogICAgICAgICAgICB2aXNbdl0gPSB2aWQ7CiAgICAgICAgfQoKICAgICAgICBpZiAodW5pdGUodSwgdikpIHsKICAgICAgICAgICAgc19pbmRpY2VzW3NfY291bnQrK10gPSBpICsgMTsKICAgICAgICB9CiAgICB9CgogICAgcHJpbnRmKCIlZFxuIiwgc19jb3VudCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHNfY291bnQ7ICsraSkKICAgICAgICBwcmludGYoIiVkICIsIHNfaW5kaWNlc1tpXSk7CiAgICBwcmludGYoIlxuIik7Cn0KCmludCBtYWluKCkgewogICAgaW50IHQ7CiAgICBzY2FuZigiJWQiLCAmdCk7CiAgICB3aGlsZSAodC0tKSBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0K