#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define mp make_pair
#define mod 1000000007
#define pi 3.1415926535897932384626
#define LMAX 9223372036854775807
#define ll long long
#define fi first
#define sec second
#define pii pair<int, int>
ll n, m, k, x, y, sum, ans, l, a[100005];
int main () {
scanf("%d %lld", &n, &l);
for (int i=1; i<=n; i++) scanf("%d", &a[i]);
for (int i=1; i<n; i++) {
if (a[i]+a[i+1]>=l) {
y++;
ans=i;
break;
}
}
if (y==0) {
printf("Impossible\n");
return 0;
}
printf("Possible\n");
vector<int>v;
for (int i=1; i<ans; i++) v.push_back(i);
for (int i=n-1; i>ans; i--) v.push_back(i);
v.push_back(ans);
for (int i=0; i<v.size(); i++) printf("%d\n", v[i]);
return 0;
}
./Main.cpp: In function ‘int main()’:
./Main.cpp:14:25: warning: format ‘%d’ expects argument of type ‘int*’, but argument 2 has type ‘long long int*’ [-Wformat=]
scanf("%d %lld", &n, &l);
^
./Main.cpp:15:44: warning: format ‘%d’ expects argument of type ‘int*’, but argument 2 has type ‘long long int*’ [-Wformat=]
for (int i=1; i<=n; i++) scanf("%d", &a[i]);
^
./Main.cpp:14:26: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d %lld", &n, &l);
^
./Main.cpp:15:45: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
for (int i=1; i<=n; i++) scanf("%d", &a[i]);
^