Tienes un arreglo de n elementos y q consultas. Existen dos tipos de consultas:
Obtener el XOR (OR exclusivo) de un rango específico
Actualizar el arreglo en la posición indicada
Tu objetivo es procesar estas consultas de manera eficiente.
Entrada
La primera línea de la entrada contiene dos enteros n y q (1 ≤ n, q ≤ 100 000), que representan la cantidad de elementos en el arreglo y el número de consultas, respectivamente.
La segunda línea contiene n números separados por espacios (), que son los valores iniciales del arreglo.
Las siguientes q líneas describen cada consulta de la siguiente forma:
Para las consultas de XOR de rango: la línea comienza con el número 1, seguido de dos enteros y (). Esos valores representan el rango de índices [$$l_i, r_i$$] sobre el cual se necesita calcular el valor XOR.
Para las consultas de actualización: la línea inicia con el número 2, seguido de dos enteros y (). Aquí, indica la posición del elemento que se va a cambiar y es su nuevo valor.
Salida
Para cada consulta de tipo XOR de rango, imprime en una línea independiente el resultado del XOR de todos los elementos dentro de ese rango.