#include <unordered_map>
#include <vector>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @return int整型vector
     */
    vector<int> FindNumsAppearOnce(vector<int>& nums) {
        // write code here
        // vector<int>res;
        // res.reserve(2);
        // unordered_set<  int> u_set;
        // for(const int & num:nums){
        //     if(u_set.count(num)) u_set.erase(num);
        //     else u_set.insert(num);
        // }
        // for(const int & num:u_set) res.push_back(num);
        // sort(res.begin(),res.end());
        // return res;
        int tmp=0;
        for(const int & num:nums) tmp ^=num;
        int mask = 1;
        while((mask & tmp) == 0) mask <<= 1;
        int a=0;
        int b=0;
        for(const int & num:nums){
            if((num & mask)!=0){
                a ^= num; 
            }else{
                b ^= num; 
            }
        }
        return  a<b? vector<int>{a,b}:vector<int>{b,a};
    }
};