#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);
unordered_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+IHYobik7CiAgICB1bm9yZGVyZWRfbWFwPGludCwgcGFpcjxpbnQsIGludD4+IHBvczsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdi5zaXplKCk7ICsraSkKICAgIHsKICAgICAgICBjaW4gPj4gdltpXTsKICAgICAgICBpZiAocG9zW3ZbaV1dLmZpcnN0ID09IDApCiAgICAgICAgICAgIHBvc1t2W2ldXS5maXJzdCA9IGkrMTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHBvc1t2W2ldXS5zZWNvbmQgPSBpKzE7CiAgICB9CiAgICBzb3J0KGFsbCh2KSk7CiAgICBpbnQgbCA9IDAsIHIgPSB2LnNpemUoKS0xOwogICAgd2hpbGUgKGwgPCByKQogICAgewogICAgICAgIGlmICh2W2xdICsgdltyXSA9PSB4KQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHBvc1t2W2xdXS5maXJzdCAhPSBwb3NbdltyXV0uZmlyc3QpCiAgICAgICAgICAgICAgICBjb3V0IDw8IHBvc1t2W2xdXS5maXJzdCA8PCAnICcgPDwgcG9zW3Zbcl1dLmZpcnN0OwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjb3V0IDw8IHBvc1t2W2xdXS5maXJzdCA8PCAnICcgPDwgcG9zW3Zbcl1dLnNlY29uZDsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH1lbHNlIGlmICh2W2xdICsgdltyXSA8IHgpCiAgICAgICAgICAgIGwrKzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHItLTsKICAgIH0KICAgIGNvdXQgPDwgIklNUE9TU0lCTEUiOwp9CgppbnQzMl90IG1haW4oKQp7CiAgICAvLyAjaWZuZGVmIE9OTElORV9KVURHRQogICAgLy8gICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgLy8gICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiAgICAvLyAgICAgZnJlb3BlbigiRXJyb3JzLnR4dCIsICJ3Iiwgc3RkZXJyKTsKICAgIC8vICNlbmRpZgogICAgZmFzdAogICAgaW50IHQgPSAxOwogICAgLy8gY2luID4+IHQ7CiAgICB3aGlsZSAodC0tKQogICAgewogICAgICAgIHNvbHZlKCk7CiAgICAgICAgaWYgKHQpIGNvdXQgPDwgJ1xuJzsKICAgIH0KICAgIGNvdXQgPDwgJ1xuJzsKICAgIHJldHVybiAwOwp9