Com o objetivo de melhorar a segurança de seus territórios, o rei da Nlogônia decidiu contratar vigilantes. O pagamento do serviço é em barras de ouro, e o cálculo da quantidade necessária é um tanto peculiar.
Um território é composto por um conjunto de povoados que são representados por um identificador único inteiro. Se existe um caminho de para , então o mesmo caminho é válido de para , e ambos estão no mesmo território. O custo para a melhoria da segurança de um único território é calculado a partir da operação entre todos os identificadores únicos dos povoados que compõem esse território.
Como o reino possui inúmeras terras e os valores podem ser bastante elevados, o rei propôs uma aposta para a empresa que gerencia os seguranças, de modo que o preço pode aumentar substancialmente ou diminuir consideravelmente: depois de calcular o valor para cada território, é aplicada a operação entre todos esses valores, sendo este o novo preço a ser cobrado.
A sua tarefa é calcular o novo preço.
A entrada é composta por um único caso de teste.
A primeira linha possui dois números inteiros e (, ), representando o número de povoados (com identificadores de a ) e o número de conexões entre os povoados, respectivamente.
As próximas linhas possuem dois números inteiros e , representando a conexão entre os dois povoados e .
A saída é composta por um único valor inteiro: o preço total do serviço.
Dica: Na linguagem C, os operadores binários (considere a e b números arbitrários):
: a|b
: a^b
8 10
1 2
2 3
4 5
1 4
5 3
5 2
5 1
6 7
7 8
8 6
8
Explicação: Temos dois territórios distintos: {{}, {}}. Primeiro, é calculado o preço resultante para cada território aplicando a operação , resultando em e . Para o preço final, aplicamos a operação entre os valores obtidos. Logo, a resposta é .
3 0
0
Note que um povoado isolado é considerado um território.
10 7
1 2
2 3
3 4
5 6
6 7
7 8
9 10
3