#include <bits/stdc++.h>
#include <cstdint>
#include <iomanip>
#define PowerUp ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(0);
#define BattleMode ll t;cin>>t;while(t--)
#define Thor solve();
#define Thunder if(t>0){cout<<line;}
#define ll long long
#define line "\n"
#define line3 cout<<line;
#define stop int abnmj; cin>>abnmj;
#define tap "\t"
#define loop(end,char) for(ll char=0;char<end;char++)
#define loopr(end,char) for(int char=end-1;char>=0;char--)
#define arrin(name) loop(name.size(),p){cin>>name[p];}
#define print(name) for(auto ik:name){cout<<ik<<" ";}
#define print2(name) for(auto ik:name){cout<<ik.first<<" "<<ik.second<<line;}
#define temple template<typename t,typename v>
#define all(x) x.begin(),x.end()
#define allr(x) x.rbegin(),x.rend()
using namespace std;
const double pi = acos(-1);
const ll MOD = 1e9 + 7;
const double EPS = 1e-7;

void solve()
{
    ll n, x;
    cin >> n >> x;
    ll y=abs(x);
    vector<ll> vec(n);
    arrin(vec)
    multiset<ll> sett;
    for (int i = 0; i < n; i++)
        sett.insert(vec[i]);
    ll mini = LLONG_MAX;
    ll num1, num2;
    ll sub;

    for (int i = 0; i < n; i++)
    {
        sett.erase(sett.find(vec[i]));
        ll value=vec[i];
        ll key1=value-y;
        ll key2=value+y;
        auto it1 = sett.lower_bound(key1);
        if (it1!=sett.end())
        {
            sub=abs(value- *it1);
            sub=abs(sub-y);
            if ((sub==mini && num1+num2> value+ *it1 ) || sub<mini)
            {
                mini=sub;
                num1=value;
                num2= * it1;
            }
        }
        if (it1!=sett.begin())
        {
            it1--;
            sub=abs(value- *it1);
            sub=abs(sub-y);
            if ((sub==mini && num1+num2> value+ *it1 ) || sub<mini)
            {
                mini=sub;
                num1=value;
                num2= * it1;
            }
        }
        it1 = sett.lower_bound(key2);
        if (it1!=sett.end())
        {
            sub=abs(value- *it1);
            sub=abs(sub-y);
            if ((sub==mini && num1+num2> value+ *it1 ) || sub<mini)
            {
                mini=sub;
                num1=value;
                num2= * it1;
            }
        }
        if (it1!=sett.begin())
        {
            it1--;
            sub=abs(value- *it1);
            sub=abs(sub-y);
            if ((sub==mini && num1+num2> value+ *it1 ) || sub<mini)
            {
                mini=sub;
                num1=value;
                num2= * it1;
            }
        }
        sett.insert(value);
    }
    if (x>=0)
        cout<<max(num1,num2)<<" "<<min(num1,num2);
    else
        cout<<min(num1,num2)<<" "<<max(num1,num2);

}

int main()
{
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
    freopen("error.txt", "w", stderr);
#endif
    PowerUp
    Thor
}
