#include<bits/stdc++.h>
using namespace std;
map<int, int>Map;
void subsetSum(int arr[], int n, int kvalue)
{
for(int i=0; i<n; i++)
{
//Map[arr[i]]++;
if(Map.count(kvalue-arr[i]))
{
cout<<arr[i]<<" "<<kvalue-arr[i]<<"\n";
}
}
}
int main()
{
int n, x, y, sum;
int arr[100];
cin>>n>>sum;
for(int i=0; i<n; i++)
{
cin>>arr[i];
Map[arr[i]]++;
}
subsetSum(arr, n, sum);
return 0;
}
/*
#include<bits/stdc++.h>
using namespace std;
map<int, int>Map;
void subsetSum(int arr[], int n, int kvalue)
{
int cnt = 0;
for(int i=0; i<n; i++)
{
Map[arr[i]]++;
if(Map.count(kvalue-arr[i]))
{
// cout<<arr[i]<<" "<<kvalue-arr[i]<<"\n";
cnt++;
}
}
cout<<cnt<<endl;
}
int main()
{
int tc, n, x, y, sum;
cin>>tc;
while(tc--)
{
cin>>n>>sum;
int *arr = new int[n];
for(int i=0; i<n; i++)
{
cin>>arr[i];
// Map[arr[i]]++;
}
subsetSum(arr, n, sum);
free(arr);
}
return 0;
}
*/
ICAgI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiAgIG1hcDxpbnQsIGludD5NYXA7CgogICB2b2lkIHN1YnNldFN1bShpbnQgYXJyW10sIGludCBuLCBpbnQga3ZhbHVlKQogICB7CiAgICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKykKICAgICAgewogICAgICAgICAvL01hcFthcnJbaV1dKys7CiAgICAgICAgIGlmKE1hcC5jb3VudChrdmFsdWUtYXJyW2ldKSkKICAgICAgICAgewogICAgICAgICAgICBjb3V0PDxhcnJbaV08PCIgIjw8a3ZhbHVlLWFycltpXTw8IlxuIjsKICAgICAgICAgfQogICAgICB9CiAgIH0KCgogICBpbnQgbWFpbigpCiAgIHsKICAgICAgaW50IG4sIHgsIHksIHN1bTsKICAgICAgaW50IGFyclsxMDBdOwoKICAgICAgY2luPj5uPj5zdW07CiAgICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKykKICAgICAgewogICAgICAgIGNpbj4+YXJyW2ldOwogICAgICAgIE1hcFthcnJbaV1dKys7CiAgICAgIH0KICAgICAgc3Vic2V0U3VtKGFyciwgbiwgc3VtKTsKCiAgICAgIHJldHVybiAwOwogICAgfQogICAgCiAgICAKICAgIAogICAgCiAgICAKICAgIC8qCiAgICAgI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiAgIG1hcDxpbnQsIGludD5NYXA7CgogICB2b2lkIHN1YnNldFN1bShpbnQgYXJyW10sIGludCBuLCBpbnQga3ZhbHVlKQogICB7CiAgICAgIGludCBjbnQgPSAwOwogICAgICBmb3IoaW50IGk9MDsgaTxuOyBpKyspCiAgICAgIHsKICAgICAgICAgTWFwW2FycltpXV0rKzsKICAgICAgICAgaWYoTWFwLmNvdW50KGt2YWx1ZS1hcnJbaV0pKQogICAgICAgICB7CiAgICAgICAgICAgLy8gY291dDw8YXJyW2ldPDwiICI8PGt2YWx1ZS1hcnJbaV08PCJcbiI7CiAgICAgICAgICAgY250Kys7CiAgICAgICAgIH0KICAgICAgfQogICAgICBjb3V0PDxjbnQ8PGVuZGw7CiAgIH0KCgogICBpbnQgbWFpbigpCiAgIHsKICAgICAgaW50IHRjLCBuLCB4LCB5LCBzdW07CgogICAgICBjaW4+PnRjOwogICAgICB3aGlsZSh0Yy0tKQogICAgICB7CiAgICAgICAgIGNpbj4+bj4+c3VtOwogICAgICAgICBpbnQgKmFyciA9IG5ldyBpbnRbbl07CiAgICAgICAgIGZvcihpbnQgaT0wOyBpPG47IGkrKykKICAgICAgICAgewogICAgICAgICAgIGNpbj4+YXJyW2ldOwogICAgICAgICAgIC8vIE1hcFthcnJbaV1dKys7CiAgICAgICAgIH0KICAgICAgICAgc3Vic2V0U3VtKGFyciwgbiwgc3VtKTsKICAgICAgICAgZnJlZShhcnIpOwogICAgICAgfQogICAgICAgcmV0dXJuIDA7CiAgIH0KICAgKi8=