# way 0
class Solution:
    def FindNumsAppearOnce(self , array ):
        # write code here
        # 如果两个数相同,那么这两个数的异或操作为零
        if len(array) < 2:
            return None
        twoNumXor = None
        for num in array:
            if twoNumXor == None:
                twoNumXor = num
            else:
                twoNumXor = twoNumXor ^ num
        count = 0
        while twoNumXor % 2 == 0:
            twoNumXor = twoNumXor >> 1
            count += 1
        mask = 1 << count
        firstNum = None
        secondNum = None
        for num in array:
            if mask & num == 0:
                if firstNum == None:
                    firstNum = num
                else:
                    firstNum = firstNum ^ num
            else:
                if secondNum == None:
                    secondNum = num
                else:
                    secondNum = secondNum ^ num
        if firstNum > secondNum:
            firstNum, secondNum = secondNum, firstNum
        return firstNum, secondNum
        
# way 1
        
class Solution:
    def FindNumsAppearOnce(self , array ):
        # write code here
        findarray = []
        findarray.append(array[0])
        lenarray = len(array)
        for i in range(1, lenarray):
            if array[i] in findarray:
                findarray.remove(array[i])
            else:
                findarray.append(array[i])
        findarray.sort()
        return findarray