#include <bits/stdc++.h>
using namespace std;
#define int              long long int
#define double           long double


const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int MAXN = 100000;
const int LINF = 2000000000000000001;

//_ ***************************** START Below *******************************



vector<int> a;

vector<int> consistency(int n, int k){
	
	vector<pair<int,int>> p(n);
	for(int i=0; i<n; i++){
		p[i] = {a[i], i};
	}
	
	sort(begin(p), end(p));
	
	for(int i=0; i<n-2; i++){
		int t = k-p[i].first;
		int s = i+1, e = n-1;
		
		while(s<e){
			int left = p[s].first;
			int right = p[e].first;
			
			
			if(left + right == t) {
				vector<int> ans = {p[i].second+1, p[s].second+1, p[e].second+1};
				sort(begin(ans), end(ans));
				return ans;
			}
			else if(left + right > t){
				e--;
			}
			else {
				s++;
			}
		}
	}
	
	return {};
}









vector<int> practice(int n, int k){
	
	return {};
}




void solve() {

	int n, k;
	cin >> n >> k;
	
	a.resize(n);
	for(int i=0; i<n; i++) cin >> a[i];
	
	
	auto ans1 = consistency(n, k);
	if(ans1.empty()) cout << "IMPOSSIBLE" << endl;
	else cout << ans1[0] << " " << ans1[1] << " " << ans1[2] << endl;
	
	
	// auto p = practice(n, k);
	// if(p.empty()) cout << " -> " << "IMPOSSIBLE" << endl;
	// else cout << " -> " << ans1[0] << " " << ans1[1] << " " << ans1[2] << endl;
	
}





int32_t main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    int t = 1;
    while (t--) {
        solve();
    }

    return 0;
}