/* Resolução do problema da conexidade com o quick-find. */

#include <stdio.h>
#define N 100000

main() {
  int i, j, p, q, t, id[N];

  /* Inicialmente cada elemento forma um conjunto unitário. */
  for (i=0; i < N; i++) id[i] = i;

  while (scanf("%d %d", &p, &q) == 2) {
    /* determina o representante de i */
    for (i=p; id[i]!=i; i=id[i]);
    /* determina o representante de j */
    for (j=q; id[j]!=j; j=id[j]);
    /* se os elementos do par estão em conjuntos diferentes, 
       imprime o par e faz a união dos dois conjuntos. */
    if (i != j) {
      /* faz a união dos conjuntos contendo p e q */
      id[i] = j;
      printf("      %d %d\n", p, q);
    }
  }
}
