#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

ll gcd(ll a,ll b){
    return b?gcd(b,a%b):a;
}

int main(){
    int n;
    ll k;
    cin >> n >> k;

    ll a[n];
    int flag = 0;
    ll max = 0;
    for(int i = 0; i < n; i++){
        cin >> a[i];
        if(max < a[i]){
            max = a[i];
        }
        if(a[i] == k){
            flag = 1;
        }
    }

    if(flag == 0){
        ll b = a[0];
        for(int i = 1; i < n; i++){
            b = gcd(b, a[i]);

            if(b == 1){
                break;
            }
        }

        if(k % b == 0 && k <= max){
            flag = 1;
        }
    }

    if(flag == 0){
        cout << "IMPOSSIBLE" << endl;
    }else{
        cout << "POSSIBLE" << endl;
    }
}
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

int main() {
    int N = 0;
    cin >> N;
    int K; 
    cin >> K;
    vector<int> A(N + 1,0);
    for(int i = 0; i < N; i++) {
        cin >> A.at(i + 1);
    }
    for(int i = 1; i < N; i++) {
        A.at(i + 1) += A.at(i);
    }
    int ans = 0;
    for(int i = 0; i < N - K + 1; i++) {
        ans = max(ans, A.at(i + K) - A.at(i));
    }
    cout << fixed << setprecision(15) << (double)(ans + K)/2 << endl;
    


    return 0;
}