#include <bits/stdc++.h>
using namespace std;
template <class T, class L>
bool smax(T& x, L y) {
  return x < y ? (x = y, 1) : 0;
}
template <class T, class L>
bool smin(T& x, L y) {
  return y < x ? (x = y, 1) : 0;
}
const int maxn = 3e5 + 17;
set<int> s;
set<pair<int, int> > bad;
int d[maxn];
void dfs(int v) {
  for (auto it = s.begin(); it != s.end();)
    if (!bad.count(minmax(v, *it))) {
      d[v]++;
      int u = *it;
      s.erase(it);
      dfs(u);
      it = s.upper_bound(u);
    } else
      it++;
}
int n, m, k, cnt[maxn];
int main() {
  ios::sync_with_stdio(0), cin.tie(0);
  cin >> n >> m >> k;
  for (int v, u; m--;) {
    cin >> v >> u, bad.insert(minmax(--v, --u));
    cnt[v]++, cnt[u]++;
  }
  for (int i = 1; i < n; i++) s.insert(i);
  dfs(0);
  cout << (s.size() || d[0] > k || (n - cnt[0] - 1) < k ? "impossible\n"
                                                        : "possible\n");
  return 0;
}
