#include <stdio.h>

#define ARR1SIZE 5
#define ARR2SIZE 5

int main()
{
    int arr1[] = {6, 3, 6, 1, 7};
    int arr2[] = {5, 1, 2, 4, 6};
    int arr3[ARR1SIZE + ARR2SIZE];

    // Using bit map, All bits are 0
    int bitMap = 0;
    int bitMask = 0;
    int i = 0;
    int k = 0;

    for (i = 0; i < ARR1SIZE; i++) {
        // Check if value already exist
        bitMask = 0;
        bitMask = 1 << arr1[i];

        if (bitMap & bitMask) {
            continue;
        }
        arr3[k++] = arr1[i];

        // Mark bitMap that value exist
        bitMap |= 1 << arr1[i];
    }

    for (i = 0; i < ARR2SIZE; i++) {
        // Check if value already exist
        bitMask = 0;
        bitMask = 1 << arr2[i];

        if (bitMap & bitMask) {
            continue;
        }
        arr3[k++] = arr2[i];

        // Mark bitMap that value exist
        bitMap |= 1 << arr2[i];
    }

    printf("Merged Array\n");
    for (i = 0; i < k; i++) {
        printf("%d ", arr3[i]);
    }

    return 0;
}
