#include <iostream>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
static int binarna(int &l,int &d,vector<int>&a,int k)
{
    int mid=(l+d)/2;
    int trval=mid;
    for(int i=0;i<a.size();i++)
    {
        if(a[i]>=trval)trval++;
        else trval--;
    }
    if(trval==k)return mid;
    if(trval>k)
        {d=mid;return binarna(mid,d,a,k);}
    else
        {l=mid;return binarna(l,mid,a,k);}
}
static int vratibr(vector<int>b,int k,int pocval)
{
    int trval=pocval;
    for(int i=0;i<b.size();i++)
    {
        if(b[i]>=trval)trval++;
        else trval--;
    }
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int tt;
    tt=1;
    while(tt--)
    {
        int t;
        cin>>t;
        int n,k;
        cin>>n>>k;
        vector<int>a(n);
        int najmanji=INT_MAX;
        int najveci=INT_MIN;
        map<int,int>cnt;
        for(int i=0;i<n;i++)
            {cin>>a[i];najveci=max(najveci,a[i]);najmanji=min(najmanji,a[i]);cnt[a[i]]++;}
        vector<bool>up(n);
        vector<int>moraminus;
        vector<int>moraplus;
        sort(a.begin(),a.end());
        int trval=0;
        int tr=0;
        while(a[tr]<trval)
        {
            trval--;
            moraminus.push_back(a[tr]);
            tr++;
        }
        for(int i=tr;i<n;i++)
        {
            if(a[i]>=trval)trval++;
            else trval--;
        }
        int maxval=trval;
        reverse(a.begin(),a.end());
        cout<<a[0]<<endl;
        trval=0;
        tr=0;
        while(a[tr]>=trval)
        {
            trval++;
            moraplus.push_back(a[tr]);
            tr++;
        }
        for(int i=0;i<n;i++)
        {
            if(a[i]>=trval){trval++;up[i]=true;}
            else {trval--;up[i]=false;}
        }
        vector<int>izmedju;
        for(int i=moraplus.size();i<n-moraminus.size();i++)
            izmedju.push_back(a[i]);
        int minval=trval;
        if((k+minval)%2==0&&k<=maxval&&k>=minval){
            trval=0;
            vector<int>ispis;
            int d=moraplus.size();
            int l=-moraminus.size();
            if(vratibr(izmedju,k,l)<k)
            {

            }
            else
            {
                int r=binarna(l,d,a,k);
                int cntmin=0;
                int cntpls=0;
                if(r<0)
                {
                    for(int i=0;i<-r;i++)
                        ispis.push_back(moraminus[i]);
                        cntmin=r;
                }
                else
                {
                    for(int i=0;i<r;i++)
                        ispis.push_back(moraplus[i]);
                    cntpls=r;
                }
                for(int i=0;i<izmedju.size();i++)
                    
            }
            cout<<"DA"<<endl;

        }
        else
            cout<<"NE"<<endl;

    }

}