#include <bits/stdc++.h>
using namespace std;
set<int> adj[300009];
int main() {
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  while (m--) {
    int a, b;
    scanf("%d%d", &a, &b);
    adj[a].insert(b);
    adj[b].insert(a);
  }
  int total = n - 1;
  stack<int> remain;
  for (int i = 2; i <= n; i++) remain.push(i);
  while (remain.size()) {
    bool flag = false;
    stack<int> stk;
    stk.push(remain.top());
    remain.pop();
    while (stk.size()) {
      int p = stk.top();
      stk.pop();
      stack<int> tmp;
      while (remain.size()) {
        int r = remain.top();
        remain.pop();
        if (adj[p].find(r) == adj[p].end()) {
          stk.push(r);
          total--;
        } else
          tmp.push(r);
      }
      if (adj[1].find(p) == adj[1].end()) flag = true;
      remain = tmp;
    }
    if (!flag) {
      puts("impossible");
      return 0;
    }
  }
  if (total > k || n - 1 - adj[1].size() < k)
    puts("impossible");
  else
    puts("possible");
}
