#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long LINF = 0x3f3f3f3f3f3f3f3fll;
int main() {
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  int deg1 = n - 1;
  set<pair<int, int> > forb;
  for (int i = 0; i < m; i++) {
    int u, v;
    scanf("%d%d", &u, &v);
    forb.insert(pair<int, int>(u, v));
    forb.insert(pair<int, int>(v, u));
    if (u == 1 || v == 1) deg1--;
  }
  set<int> out;
  for (int i = 2; i <= n; i++) out.insert(i);
  bool ok = 1;
  int ncmp = 0;
  while (!out.empty()) {
    bool connected = 0;
    queue<int> tree;
    tree.push(*out.begin());
    out.erase(out.begin());
    while (!tree.empty()) {
      int v = tree.front();
      tree.pop();
      if (forb.find(pair<int, int>(1, v)) == forb.end()) connected = 1;
      vector<int> trash;
      for (int x : out) {
        if (forb.find(pair<int, int>(v, x)) == forb.end()) {
          tree.push(x);
          trash.push_back(x);
        }
      }
      for (int x : trash) out.erase(x);
    }
    if (!connected) {
      ok = 0;
      break;
    }
    ncmp++;
  }
  printf("%spossible\n", (ncmp <= k && deg1 >= k && ok) ? "" : "im");
  return 0;
}
