#include <bits/stdc++.h>
std::map<std::pair<int, int>, bool> mp;
int q[300000], urm[300000 + 1];
inline bool bfs() {
  q[0] = urm[1];
  urm[1] = urm[urm[1]];
  int st = 0, dr = 1;
  bool ok = 0;
  while (st < dr) {
    if (mp[{1, q[st]}] == 0) ok = 1;
    int x = 1;
    while (urm[x] != 1) {
      if (mp[{std::min(q[st], urm[x]), std::max(q[st], urm[x])}])
        x = urm[x];
      else {
        q[dr++] = urm[x];
        urm[x] = urm[urm[x]];
      }
    }
    st++;
  }
  return ok;
}
int main() {
  int n, m, k;
  fscanf(stdin, "%d%d%d", &n, &m, &k);
  int cate = 0;
  for (int i = 1; i <= m; i++) {
    int x, y;
    fscanf(stdin, "%d%d", &x, &y);
    if (x == 1 || y == 1) cate++;
    mp[{std::min(x, y), std::max(x, y)}] = 1;
  }
  for (int i = 1; i < n; i++) urm[i] = i + 1;
  urm[n] = 1;
  int cnt = 0;
  bool ok = 1;
  while (urm[1] != 1) {
    ok &= bfs();
    cnt++;
  }
  if (ok == 0 || cnt > k || cate + k > n - 1)
    fprintf(stdout, "impossible\n");
  else
    fprintf(stdout, "possible\n");
  fclose(stdin);
  fclose(stdout);
  return 0;
}
