#include <bits/stdc++.h>
using namespace std;
int main() {
  int m, n;
  cin >> m >> n;
  vector<set<int>> da(m + 1);
  vector<set<int>> gu(m + 1);
  for (int t = 0; t < m; t++) {
    int k;
    cin >> k;
    for (int i = 0; i < k; i++) {
      int mag;
      cin >> mag;
      da[t + 1].insert(mag);
    }
    for (int i = 0; i < n; i++)
      if (da[t + 1].find(i + 1) == da[t + 1].end()) gu[t + 1].insert(i + 1);
  }
  for (int i = 0; i < m; i++)
    for (int j = 0; j < i; j++) {
      size_t same = 0;
      for (int mag : gu[j + 1])
        if (da[i + 1].find(mag) != da[i + 1].end()) ++same;
      if (same == da[i + 1].size()) goto wrong;
    }
canto:
  return cout << "possible", 0;
wrong:
  return cout << "impossible", 0;
}
