class Main {
static int getBitVectorOfUnique(int[] arr) {
int bitVector = 0;
int bitVectorOfNonUnique = 0;
for (int i = 0; i < arr.length; i++)
{
int mask = 1 << arr[i];
if ((bitVector & mask) == 0) {
bitVector |= mask;
} else if((bitVectorOfNonUnique & mask) == 0) {
bitVectorOfNonUnique |= mask;
}
}
return (bitVector ^ bitVectorOfNonUnique);
}
static void printUniq(int[] arr) {
int bitVector = getBitVectorOfUnique(arr);
for (int i = 0; i < arr.length; i++)
{
int mask = 1 << arr[i];
if ((bitVector & mask) != 0) {
System.out.print(arr[i] + " ");
}
}
}
public static void main(String[] args) {
int[] arr = {1, 5, 1, 10, 12, 10, 2147483646, 2147483647, 2147483647};
printUniq(arr);
}
}