#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
/*
int max(int x, int y)
{
    if (x > y)
        return x;
    else
        return y;
}

int min(int x, int y)
{
    if (x > y)
        return y;
    else
        return x;
} */
int comparator(const void *p1, const void *p2)
{
    return (*(int *)p1 - *(int *)p2);
}

int main()
{
    int t, n, k, ans = 0;
    scanf("%d", &t);
    for (int i = 0; i < t; i++)
    {
        scanf("%d %d", &n, &k);
        
        int a[n];
        for (int i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }
        int max = 0, mex = 0;
        qsort(a, n, sizeof(int), comparator);
        for (int i = 0; i < n; i++)
        {
            if (a[i] > max)
            {
                max = a[i];
            }
            if (a[i] == mex)
            {
                mex++;
            }
        }
        int ceil = 0;
        if ((max + mex) % 2 == 0)
        {
            ceil = (max + mex) / 2;
        }
        else
            ceil = (max + mex) / 2 + 1;
        int f = 0;
        if (mex < max)
        {
            ans = n;
            for (int i = 0; i < n; i++)
            {
                if (ceil == a[i])
                {
                    f = 1;
                }
            }
            if (f == 0)
            {
                ans++;
            }
        }
        if (mex > max)
        {
            ans = k + n;
        }
        if(k==0)
        {
            ans=n;
        }
        printf("%d\n", ans);
    }
}