#include <bits/stdc++.h>
using namespace std;
long long mult(long long a, long long b, long long p = 1000000007) {
  long long ans = a;
  ans *= b;
  return ((ans >= p) ? ans % p : ans);
}
long long add(long long a, long long b, long long p = 1000000007) {
  long long ans = a + b;
  return ((ans >= p) ? ans - p : ans);
}
long long fpow(long long n, long long k, long long p = 1000000007) {
  long long r = 1;
  for (; k; k >>= 1) {
    if (k & 1) r = r * n % p;
    n = n * n % p;
  }
  return r;
}
long long inv(long long a, long long p = 1000000007) {
  return fpow(a, p - 2, p);
}
int m, n;
int ip, temp;
vector<vector<bool> > store(50, vector<bool>(10001, 0));
int main() {
  ios::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> m >> n;
  vector<int> arr(n, 1);
  for (int i = 0; i < m; i++) {
    cin >> ip;
    for (int j = 0; j < ip; j++) {
      cin >> temp;
      store[i][temp] = 1;
    }
  }
  bool flag = true;
  for (int i = 0; i < m; i++) {
    bool inner = true;
    for (int j = i + 1; j < m; j++) {
      bool inte = false;
      for (int k = 1; k < n + 1; k++)
        if (store[i][k] == 1 and store[j][k] == 1) {
          inte = true;
          break;
        }
      inner &= inte;
    }
    flag = inner;
    if (!flag) break;
  }
  if (flag)
    cout << "possible" << endl;
  else
    cout << "impossible" << endl;
  return 0;
}
