#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct node
{
int x,y;
node(int x1,int y1)
{
x=x1;
y=y1;
}
};
bool comp(node*a,node*b)
{
return a->x < b->x;
}
int main() {
int n,x;
cin>>n>>x;
vector<node*> a;
for(int i=0;i<n;i++)
{
int y;
cin>>y;
a.push_back(new node(y,i));
}
sort(a.begin(),a.end(),comp);
vector<int> V;
int flag=0;
for(int i=0;i<n;i++)
{
int j=i+1;
int k=n-1;
while(j < k)
{
if(a[i]->x + a[j]->x + a[k]->x == x)
{
V.push_back(a[i]->y);
V.push_back(a[j]->y);
V.push_back(a[k]->y);
flag=1;
break;
}
else if(a[i]->x + a[j]->x + a[k]->x < x)
{
j++;
}
else
{
k--;
}
}
if(flag ==1)
{
break;
}
}
sort(V.begin(),V.end());
for(int i=0;i<V.size();i++)
{
cout<<V[i]+1<<" ";
}
cout<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IG5vZGUKewoJaW50IHgseTsKCW5vZGUoaW50IHgxLGludCB5MSkKCXsKCQl4PXgxOwoJCXk9eTE7Cgl9Cn07Cgpib29sIGNvbXAobm9kZSphLG5vZGUqYikKewoJcmV0dXJuIGEtPnggPCBiLT54Owp9CgppbnQgbWFpbigpIHsKCglpbnQgbix4OwoJY2luPj5uPj54OwoJCgl2ZWN0b3I8bm9kZSo+IGE7Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJewoJCWludCB5OwoJCWNpbj4+eTsKCQlhLnB1c2hfYmFjayhuZXcgbm9kZSh5LGkpKTsKCX0KCglzb3J0KGEuYmVnaW4oKSxhLmVuZCgpLGNvbXApOwoJdmVjdG9yPGludD4gVjsKCWludCBmbGFnPTA7Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJewoJCWludCBqPWkrMTsKCQlpbnQgaz1uLTE7CgkJd2hpbGUoaiA8IGspCgkJewoJCQlpZihhW2ldLT54ICsgYVtqXS0+eCArIGFba10tPnggPT0geCkKCQkJewoJCQkJVi5wdXNoX2JhY2soYVtpXS0+eSk7CgkJCQlWLnB1c2hfYmFjayhhW2pdLT55KTsKCQkJCVYucHVzaF9iYWNrKGFba10tPnkpOwoJCQkJZmxhZz0xOwoJCQkJYnJlYWs7CgkJCX0KCQkJZWxzZSBpZihhW2ldLT54ICsgYVtqXS0+eCArIGFba10tPnggPCB4KQoJCQl7CgkJCQlqKys7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQlrLS07CgkJCX0KCQl9CgkJaWYoZmxhZyA9PTEpCgkJewoJCQlicmVhazsKCQl9Cgl9Cglzb3J0KFYuYmVnaW4oKSxWLmVuZCgpKTsKCWZvcihpbnQgaT0wO2k8Vi5zaXplKCk7aSsrKQoJewoJCWNvdXQ8PFZbaV0rMTw8IiAiOwoJfQoJY291dDw8ZW5kbDsKCQoJcmV0dXJuIDA7Cn0=