#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int q[N];//记录硬币的面额
int main()
{
int n,m;//n表示硬币的数量,m表示点的数量
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&q[i]);
sort(q+1,q+n+1);//将硬币按照面额大小从小到大排序
int i=1,j=n;//双指针搜索
while(i<j)
{
while(q[i]+q[j]>m)//如果两张钱的面额相加大于所要求的
j--;
if(i!=j&&q[i]+q[j]==m)//我们找到了这样的两张钱,则输出结果,并退出程序
{
printf("%d %d",q[i],q[j]);
return 0;
}
i++;
}
printf("No Solution");
return 0;
}