#include <bits/stdc++.h>
using namespace std;
long long mod = 1000000007;
int main() {
  int n, m, k;
  long long ans = 0;
  scanf("%d %d %d", &n, &m, &k);
  std::vector<std::vector<int> > banned(n);
  for (int i = 0; i < m; i++) {
    int a, b;
    scanf("%d %d", &a, &b);
    a--;
    b--;
    banned[a].push_back(b);
    banned[b].push_back(a);
  }
  if (banned[0].size() + k > n - 1) {
    cout << "impossible";
    return 0;
  }
  std::vector<bool> used(n, false);
  std::vector<int> toadd;
  for (int i = 1; i < n; i++) toadd.push_back(i);
  std::vector<bool> badn(n, false);
  used[0] = true;
  std::vector<bool> banfrom1(n, false);
  int comps = 0;
  for (auto x : banned[0]) banfrom1[x] = true;
  for (int s = 1; s < n; s++) {
    if (used[s]) continue;
    if (banfrom1[s]) continue;
    comps++;
    deque<int> bfs;
    bfs.push_back(s);
    used[s] = true;
    while (bfs.size() > 0) {
      int v = bfs.front();
      bfs.pop_front();
      for (auto x : banned[v]) badn[x] = true;
      std::vector<int> newtoadd;
      for (auto u : toadd) {
        if (badn[u])
          newtoadd.push_back(u);
        else {
          used[u] = true;
          bfs.push_back(u);
        }
      }
      toadd = newtoadd;
      for (auto x : banned[v]) badn[x] = false;
    }
  }
  bool allused = true;
  for (int i = 0; i < n; i++)
    if (!used[i]) allused = false;
  if ((!allused) || (comps > k))
    cout << "impossible";
  else
    cout << "possible";
}
