#include <bits/stdc++.h>
using namespace std;
#define ll long long
// #define int long long int
#define ld long double
#define all(x) x.begin(), x.end()
#define sortall(x) sort(all(x))
#define endl '\n'
#define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
template<class T>
void printC (T Collection)
{
for (auto&i:Collection)
cout << i << " \n";
cout << '\n';
}
/*
* Think twice, code once
* Think of different approaches to tackle a problem: write them down.
* Think of different views of the problem. don't look from only one side.
* don't get stuck in one approach.
* common mistakes: - over_flow
* - out_of_bound index
* - infinite loop
* - corner cases
* - duplication counting.
*/
void solve()
{
int n, x; cin >> n >> x;
vector<int> v(n);
map<int, pair<int, int>> pos;
for (int i = 0; i < v.size(); ++i)
{
cin >> v[i];
if (pos[v[i]].first == 0)
pos[v[i]].first = i+1;
else
pos[v[i]].second = i+1;
}
sort(all(v));
int l = 0, r = v.size()-1;
while (l < r)
{
if (v[l] + v[r] == x)
{
if (pos[v[l]].first != pos[v[r]].first)
cout << pos[v[l]].first << ' ' << pos[v[r]].first;
else
cout << pos[v[l]].first << ' ' << pos[v[r]].second;
return;
}else if (v[l] + v[r] < x)
l++;
else
r--;
}
cout << "IMPOSSIBLE";
}
int32_t main()
{
// #ifndef ONLINE_JUDGE
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
// freopen("Errors.txt", "w", stderr);
// #endif
fast
int t = 1;
// cin >> t;
while (t--)
{
solve();
if (t) cout << '\n';
}
cout << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nCi8vICNkZWZpbmUgaW50IGxvbmcgbG9uZyBpbnQKI2RlZmluZSBsZCBsb25nIGRvdWJsZQojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSBzb3J0YWxsKHgpIHNvcnQoYWxsKHgpKQojZGVmaW5lIGVuZGwgJ1xuJwojZGVmaW5lIGZhc3QgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTtjaW4udGllKDApO2NvdXQudGllKDApOwp0ZW1wbGF0ZTxjbGFzcyBUPgp2b2lkIHByaW50QyAoVCBDb2xsZWN0aW9uKQp7CiAgICBmb3IgKGF1dG8maTpDb2xsZWN0aW9uKQogICAgICAgIGNvdXQgPDwgaSA8PCAiIFxuIjsKICAgIGNvdXQgPDwgJ1xuJzsKfQoKLyoKICogVGhpbmsgdHdpY2UsIGNvZGUgb25jZQogKiBUaGluayBvZiBkaWZmZXJlbnQgYXBwcm9hY2hlcyB0byB0YWNrbGUgYSBwcm9ibGVtOiB3cml0ZSB0aGVtIGRvd24uCiAqIFRoaW5rIG9mIGRpZmZlcmVudCB2aWV3cyBvZiB0aGUgcHJvYmxlbS4gZG9uJ3QgbG9vayBmcm9tIG9ubHkgb25lIHNpZGUuCiAqIGRvbid0IGdldCBzdHVjayBpbiBvbmUgYXBwcm9hY2guCiAqIGNvbW1vbiBtaXN0YWtlczogLSBvdmVyX2Zsb3cKICogICAgICAgICAgICAgICAgICAtIG91dF9vZl9ib3VuZCBpbmRleAogKiAgICAgICAgICAgICAgICAgIC0gaW5maW5pdGUgbG9vcAogKiAgICAgICAgICAgICAgICAgIC0gY29ybmVyIGNhc2VzCiAqICAgICAgICAgICAgICAgICAgLSBkdXBsaWNhdGlvbiBjb3VudGluZy4KKi8KCnZvaWQgc29sdmUoKQp7CiAgICBpbnQgbiwgeDsgY2luID4+IG4gPj4geDsKICAgIHZlY3RvcjxpbnQ+IHYobik7CiAgICBtYXA8aW50LCBwYWlyPGludCwgaW50Pj4gcG9zOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2LnNpemUoKTsgKytpKQogICAgewogICAgICAgIGNpbiA+PiB2W2ldOwogICAgICAgIGlmIChwb3NbdltpXV0uZmlyc3QgPT0gMCkKICAgICAgICAgICAgcG9zW3ZbaV1dLmZpcnN0ID0gaSsxOwogICAgICAgIGVsc2UKICAgICAgICAgICAgcG9zW3ZbaV1dLnNlY29uZCA9IGkrMTsKICAgIH0KICAgIHNvcnQoYWxsKHYpKTsKICAgIGludCBsID0gMCwgciA9IHYuc2l6ZSgpLTE7CiAgICB3aGlsZSAobCA8IHIpCiAgICB7CiAgICAgICAgaWYgKHZbbF0gKyB2W3JdID09IHgpCiAgICAgICAgewogICAgICAgICAgICBpZiAocG9zW3ZbbF1dLmZpcnN0ICE9IHBvc1t2W3JdXS5maXJzdCkKICAgICAgICAgICAgICAgIGNvdXQgPDwgcG9zW3ZbbF1dLmZpcnN0IDw8ICcgJyA8PCBwb3NbdltyXV0uZmlyc3Q7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGNvdXQgPDwgcG9zW3ZbbF1dLmZpcnN0IDw8ICcgJyA8PCBwb3NbdltyXV0uc2Vjb25kOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfWVsc2UgaWYgKHZbbF0gKyB2W3JdIDwgeCkKICAgICAgICAgICAgbCsrOwogICAgICAgIGVsc2UKICAgICAgICAgICAgci0tOwogICAgfQogICAgY291dCA8PCAiSU1QT1NTSUJMRSI7Cn0KCmludDMyX3QgbWFpbigpCnsKICAgIC8vICNpZm5kZWYgT05MSU5FX0pVREdFCiAgICAvLyAgICAgZnJlb3BlbigiaW5wdXQudHh0IiwgInIiLCBzdGRpbik7CiAgICAvLyAgICAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIC8vICAgICBmcmVvcGVuKCJFcnJvcnMudHh0IiwgInciLCBzdGRlcnIpOwogICAgLy8gI2VuZGlmCiAgICBmYXN0CiAgICBpbnQgdCA9IDE7CiAgICAvLyBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pCiAgICB7CiAgICAgICAgc29sdmUoKTsKICAgICAgICBpZiAodCkgY291dCA8PCAnXG4nOwogICAgfQogICAgY291dCA8PCAnXG4nOwogICAgcmV0dXJuIDA7Cn0=