#include <bits/stdc++.h>
using namespace std;
int n, m, k, x, y, id[3000001], c = 0, d = 0;
set<pair<int, int>> forbid;
set<int> remain;
inline bool ok(int a, int b) {
  if (a > b) swap(a, b);
  return forbid.find({a, b}) == forbid.end();
}
void dfs(int i) {
  vector<int> memo;
  for (int x : remain)
    if (ok(x, i)) memo.push_back(x);
  for (int x : memo) remain.erase(x);
  for (int x : memo) dfs(x);
}
int main() {
  scanf("%d%d%d", &n, &m, &k);
  d = n - 1;
  for (int i = 2; i <= n; i++) remain.insert(i);
  for (int i = 0; i < m; i++) {
    scanf("%d%d", &x, &y);
    if (x > y) swap(x, y);
    if (x == 1) d--;
    forbid.insert(make_pair(x, y));
  }
  if (d < k) {
    puts("impossible");
    return 0;
  }
  for (int i = 2; i <= n; i++) {
    if (ok(1, i) && remain.find(i) != remain.end()) {
      dfs(i);
      c++;
    }
  }
  if (!remain.empty() || c > k)
    puts("impossible");
  else
    puts("possible");
  return 0;
}
