#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"
int dij(int src, int dest, int n, vector<vector<pair<int,pair<int,int>>>> adj, vector<int> dist, int cur, vector<bool> vis, int starttime){
int ans = LLONG_MAX;
for(int i = 0; i < adj[src].size(); i++){
int u = adj[src][i].first;
int w = adj[src][i].second.first;
int k = adj[src][i].second.second;
if(cur != k){
w += 60;
}
if(u == dest){
ans = min(ans, starttime + w);
continue;
}
if(vis[u]){
continue;
}
vis[u] = true;
ans = min(dij(u,dest,n,adj,dist,k,vis,starttime + w),ans);
vis[u] = false;
}
return ans;
}
void splitnum(string s, int val, vector<vector<pair<int,pair<int,int>>>> &adj, int cnt, vector<int> &starter){
stringstream ss(s);
vector<int> floors;
int num;
while (ss >> num) {
floors.push_back(num);
}
bool flag = true;
for (int i = 1; i < floors.size(); i++) {
int sum = val*(floors[i] - floors[i - 1]);
adj[floors[i]].push_back({floors[i-1], {sum, cnt}});
adj[floors[i-1]].push_back({floors[i], {sum, cnt}});
if(floors[i - 1] == 0 && flag){
starter.push_back(floors[i - 1]);
flag = false;
}
}
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int n, k;
while(cin >> n >> k){
vector<int> elevator(n);
vector<int> dist(100, LLONG_MAX);
vector<vector<pair<int,pair<int,int>>>> adj(100);
vector<int> starter;
for(int i = 0; i < n; i++){
cin >> elevator[i];
}
cin.ignore();
for(int i = 0; i < n; i++){
string s;
getline(cin, s);
splitnum(s, elevator[i], adj, i, starter);
}
dist[0] = 0;
int ans = LLONG_MAX;
for(int i = 0; i < starter.size(); i++){
vector<bool> vis(100, false);
vis[0] = true;
ans = min(dij(0,k,n,adj,dist,starter[i], vis, 0), ans);
}
if (ans == LLONG_MAX) {
cout << "IMPOSSIBLE" << endl;
} else {
cout << ans << endl;
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBlbmRsICJcbiIKCmludCBkaWooaW50IHNyYywgaW50IGRlc3QsIGludCBuLCB2ZWN0b3I8dmVjdG9yPHBhaXI8aW50LHBhaXI8aW50LGludD4+Pj4gYWRqLCB2ZWN0b3I8aW50PiBkaXN0LCBpbnQgY3VyLCB2ZWN0b3I8Ym9vbD4gdmlzLCBpbnQgc3RhcnR0aW1lKXsKCWludCBhbnMgPSBMTE9OR19NQVg7Cglmb3IoaW50IGkgPSAwOyBpIDwgYWRqW3NyY10uc2l6ZSgpOyBpKyspewoJCWludCB1ID0gYWRqW3NyY11baV0uZmlyc3Q7CgkJaW50IHcgPSBhZGpbc3JjXVtpXS5zZWNvbmQuZmlyc3Q7CgkJaW50IGsgPSBhZGpbc3JjXVtpXS5zZWNvbmQuc2Vjb25kOwoJCWlmKGN1ciAhPSBrKXsKCQkJdyArPSA2MDsKCQl9CgkJaWYodSA9PSBkZXN0KXsKCQkJYW5zID0gbWluKGFucywgc3RhcnR0aW1lICsgdyk7CgkJCWNvbnRpbnVlOwoJCX0KCQlpZih2aXNbdV0pewoJCQljb250aW51ZTsKCQl9CgkJdmlzW3VdID0gdHJ1ZTsKCQlhbnMgPSBtaW4oZGlqKHUsZGVzdCxuLGFkaixkaXN0LGssdmlzLHN0YXJ0dGltZSArIHcpLGFucyk7CgkJdmlzW3VdID0gZmFsc2U7Cgl9CiAgICByZXR1cm4gYW5zOwp9Cgp2b2lkIHNwbGl0bnVtKHN0cmluZyBzLCBpbnQgdmFsLCB2ZWN0b3I8dmVjdG9yPHBhaXI8aW50LHBhaXI8aW50LGludD4+Pj4gJmFkaiwgaW50IGNudCwgdmVjdG9yPGludD4gJnN0YXJ0ZXIpewoJc3RyaW5nc3RyZWFtIHNzKHMpOwoJdmVjdG9yPGludD4gZmxvb3JzOwoJaW50IG51bTsKCXdoaWxlIChzcyA+PiBudW0pIHsKCQlmbG9vcnMucHVzaF9iYWNrKG51bSk7Cgl9Cglib29sIGZsYWcgPSB0cnVlOwoJZm9yIChpbnQgaSA9IDE7IGkgPCBmbG9vcnMuc2l6ZSgpOyBpKyspIHsKCQlpbnQgc3VtID0gdmFsKihmbG9vcnNbaV0gLSBmbG9vcnNbaSAtIDFdKTsKCQlhZGpbZmxvb3JzW2ldXS5wdXNoX2JhY2soe2Zsb29yc1tpLTFdLCB7c3VtLCBjbnR9fSk7CgkJYWRqW2Zsb29yc1tpLTFdXS5wdXNoX2JhY2soe2Zsb29yc1tpXSwge3N1bSwgY250fX0pOwoJCWlmKGZsb29yc1tpIC0gMV0gPT0gMCAmJiBmbGFnKXsKCQkJc3RhcnRlci5wdXNoX2JhY2soZmxvb3JzW2kgLSAxXSk7CgkJCWZsYWcgPSBmYWxzZTsKCQl9Cgl9Cn0KCnNpZ25lZCBtYWluKCl7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGludCBuLCBrOwogICAgd2hpbGUoY2luID4+IG4gPj4gayl7CiAgICAJdmVjdG9yPGludD4gZWxldmF0b3Iobik7CiAgICAJdmVjdG9yPGludD4gZGlzdCgxMDAsIExMT05HX01BWCk7CiAgICAJdmVjdG9yPHZlY3RvcjxwYWlyPGludCxwYWlyPGludCxpbnQ+Pj4+IGFkaigxMDApOwogICAgCXZlY3RvcjxpbnQ+IHN0YXJ0ZXI7CiAgICAJCiAgICAJZm9yKGludCBpID0gMDsgaSA8IG47IGkrKyl7CiAgICAJCWNpbiA+PiBlbGV2YXRvcltpXTsKCQl9CiAgICAJCiAgICAJY2luLmlnbm9yZSgpOwogICAgCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewogICAgCQlzdHJpbmcgczsgCiAgICAJCWdldGxpbmUoY2luLCBzKTsKICAgIAkJc3BsaXRudW0ocywgZWxldmF0b3JbaV0sIGFkaiwgaSwgc3RhcnRlcik7CgkJfQoJCQoJCWRpc3RbMF0gPSAwOwoJCWludCBhbnMgPSBMTE9OR19NQVg7CgkJZm9yKGludCBpID0gMDsgaSA8IHN0YXJ0ZXIuc2l6ZSgpOyBpKyspewoJCQl2ZWN0b3I8Ym9vbD4gdmlzKDEwMCwgZmFsc2UpOwoJCQl2aXNbMF0gPSB0cnVlOwoJCQlhbnMgPSBtaW4oZGlqKDAsayxuLGFkaixkaXN0LHN0YXJ0ZXJbaV0sIHZpcywgMCksIGFucyk7CgkJfQoJCQoJCWlmIChhbnMgPT0gTExPTkdfTUFYKSB7CgkJCWNvdXQgPDwgIklNUE9TU0lCTEUiIDw8IGVuZGw7CgkJfSBlbHNlIHsKCQkJY291dCA8PCBhbnMgPDwgZW5kbDsKCQl9Cgl9Cn0=