#include <bits/stdc++.h>
const int maxn = 300005;
using namespace std;
bool mark[maxn];
int pre[maxn], nxt[maxn];
set<pair<int, int> > forb;
int _nxt(int x) { return (mark[nxt[x]] ? nxt[x] = _nxt(nxt[x]) : nxt[x]); }
void erase(int x) {
  int l = pre[x], r = nxt[x];
  mark[x] = true;
  nxt[l] = r;
  pre[r] = l;
}
void dfs(int cur) {
  erase(cur);
  for (int x = _nxt(0); x != 0; x = _nxt(x))
    if (forb.find(make_pair(cur, x)) == forb.end()) dfs(x);
}
int Comp(int n) {
  pre[0] = n;
  nxt[0] = 1;
  for (int i = 1; i <= n; i++) {
    pre[i] = i - 1, nxt[i] = (i + 1) % (n + 1);
    mark[i] = false;
  }
  int comp = 0;
  for (int i = 1; i <= n; i++)
    if (!mark[i]) {
      comp++;
      dfs(i);
    }
  return comp;
}
int main() {
  ios_base::sync_with_stdio(false);
  int n, m, k;
  cin >> n >> m >> k;
  int deg1 = n - 1;
  for (int i = 0; i < m; i++) {
    int a, b;
    cin >> a >> b;
    forb.insert(make_pair(a, b));
    forb.insert(make_pair(b, a));
    if (a == 1 || b == 1) deg1--;
  }
  bool ans = true;
  ans &= deg1 >= k;
  ans &= Comp(n) == 1;
  for (int i = 1; i <= n; i++) {
    forb.insert(make_pair(1, i));
    forb.insert(make_pair(i, 1));
  }
  ans &= Comp(n) <= k + 1;
  cout << (ans ? "possible\n" : "impossible\n");
  return 0;
}
