#include <bits/stdc++.h>
using namespace std;
set<pair<int, int>> forbid;
set<int> remain;
int check(int x, int y) {
  if (x > y) swap(x, y);
  return forbid.find({x, y}) == forbid.end();
}
void DFS(int u) {
  vector<int> G;
  for (auto v : remain) {
    if (check(u, v)) {
      G.push_back(v);
    }
  }
  for (auto v : G) {
    remain.erase(v);
  }
  for (auto v : G) {
    DFS(v);
  }
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = 2; i <= n; i++) remain.insert(i);
  int deg_one = n - 1;
  for (int i = 1; i <= m; i++) {
    int x, y;
    cin >> x >> y;
    if (x > y) swap(x, y);
    if (x == 1) deg_one--;
    forbid.insert({x, y});
  }
  if (deg_one < k) {
    cout << "impossible";
    return 0;
  }
  int component = 0;
  for (int i = 2; i <= n; i++) {
    if (check(1, i) && remain.find(i) != remain.end()) {
      DFS(i);
      component++;
    }
  }
  if (component > k) {
    cout << "impossible";
    return 0;
  }
  if (remain.size()) {
    cout << "impossible";
    return 0;
  }
  cout << "possible";
}
