#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int flag[1010] = { 0 };//开始是想用bool变量就行,后来考虑到两个数可能会相等,所以还是要一个数组;考虑到m-a[i]的大小,所以这里不能只开到500左右,直接开到1010比较方便
bool cmp(int a, int b)
{
return a < b;
}
int main()
{
memset(flag, 0, sizeof(flag));
int n, m;
int a[100010];
scanf("%d %d", &n,&m);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
flag[a[i]]++;
}
sort(a, a + n, cmp);//从小到大排序,方便只输出v1最小的值
int l;
for ( l = 0; l < n; l++)
{
flag[a[l]]--;
if (flag[m - a[l]] > 0)
{
printf("%d %d", a[l], m - a[l]);
break;
}
}
if (l == n) printf("No Solution");
return 0;
}