//查找一堆出现次数为偶数中的唯一的奇数次数funcfindOddNum(nums []int)int{var res int=0for i :=0; i <len(nums); i++{
res ^= nums[i]}return res
}//查找一堆出现次数为偶数次数中唯二的两个奇数次数/*
1. 首先将所有数异或得到这两个奇数的异或ans
2. 找到ans的一个为1的位置,设这位为1其余为0的二进制为s
3. 标记两个数res1与res2,将s与所有数相与,若为1,与res1异或,否则与res2异或
4. res1,res2为返回值
ans某一位为1,证明这一位两个奇数次数不相同
而因此可以通过这一位是否为1将数据分为两类,一类为奇数res1 + 一堆这一位为1的偶数次数,另一类....
*/funcfindOddTowNum(nums []int)(int,int){
ans :=findOddNum(nums)
s :=1for i :=0; i <32; i++{if ans & s !=0{break}
s <<=1}
res1, res2 :=0,0for i :=0; i <len(nums); i++{if s & nums[i]!=0{
res1 ^= nums[i]}else{
res2 ^= nums[i]}}return res1, res2
}funcmain(){
buf := bufio.NewReader(os.Stdin)
s,_,_:= buf.ReadLine()
strs := strings.Fields(string(s))var nums []intfor i :=0; i <len(strs); i++{
n,_:= strconv.Atoi(strs[i])
nums =append(nums, n)}
fmt.Println(findOddNum(nums))
fmt.Println(findOddTowNum(nums))}