#include<bits/stdc++.h>
using namespace std;

const int maxn=1e5+5;

map<int,int> vis;
int a[maxn];

int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        int n,k;
        scanf("%d%d",&n,&k);
        int Max=0,cnt=0;
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            if(!vis[a[i]]){
                vis[a[i]]=1;
                cnt++;
            }
            Max=max(Max,a[i]);
        }
        if(k==0){
           printf("%d\n",cnt);
                   for(int i=1;i<=n;i++){
            vis[a[i]]=0;
        }
           continue;
        }
        int now=0;
        while(vis[now]){
            now++;
        }
        if(now>Max){

        for(int i=1;i<=n;i++){
            vis[a[i]]=0;
        }
            printf("%d\n",cnt+k);
            continue;
        }
        int t=(now+Max+1)/2;
        if(!vis[t]){
            cnt++;
        }
        printf("%d\n",cnt);
        for(int i=1;i<=n;i++){
            vis[a[i]]=0;
        }
    }
}