#include <stdio.h>

void printPairs(int arr[], int arr_size, int sum)
{
    int i = 0;
    int temp = 0;
    int bitmap = 0; // all bits are 0
    int bitmask = 0;

    for(i = 0; i < arr_size; i++)
    {
        temp = sum - arr[i];

        bitmask = 0;
        bitmask = 1 << temp;


        if(temp >= 0 && (bitmap & bitmask))
        {
            printf("Pair with given sum %d is (%d, %d) \n", sum, arr[i], temp);
        }
        bitmap |= 1 << arr[i];
    }
}


/* Driver program to test above function */
int main()
{
    int A[] = {12, 4, 13, 6, 10, 3};
    int sum = 16;
    int arr_size = 6;

    printPairs(A, arr_size, sum);

    return 0;
}
