可做题
题号:NC14500
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

qmqmqm希望给sublinekelzrip出一道可做题。于是他想到了这么一道题目:给一个长度为n的非负整数序列ai,你需要计算其异或前缀和bi,满足条件b1=a1,bi=bi-1 xor ai(i >= 2).
但是由于数据生成器出现了问题,他生成的序列a的长度特别长,并且由于内存空间不足,一部分ai,已经丢失了,只剩余m个位置的元素已知。现在qmqmqm找到你,希望你根据剩余的ai,计算出所有可能的a序列对应的b序列中的最小值。

输入描述:

输入第一行两个非负整数n,m,分别表示原始序列a的长度及剩余元素的个数。

之后m行,每行2个数i,ai,表示一个剩余元素的位置和数值。

输出描述:

输出一个整数表示可能的最小值。
示例1

输入

复制
5 3
4 0
3 7
5 0

输出

复制
7

说明

已知的a序列为:X,X,7,0,0,其中`X`表示这个位置丢失了。一种可能的a序列为0,7,7,0,0,对应的b序列为0,7,0,0,0,和最小为7。可以证明不存在和更小的情况。

备注:

1≤n≤109,0≤m≤min{n,105},0≤ai≤109
注意未知的 ai 可以超过已知 ai的范围。

保证输入中所有的 i 不同,且满足 1≤i≤n