#include <bits/stdc++.h>
using namespace std;
const int MAXN = 300100;
int n, m, k, x, y;
set<pair<int, int> > ec;
set<int> s;
bool mk[MAXN];
void dfs(int node) {
  mk[node] = true;
  auto it = s.begin();
  while (it != s.end()) {
    int v = *it;
    if (ec.find({node, v}) == ec.end()) {
      s.erase(it);
      dfs(v);
    }
    it = s.upper_bound(v);
  }
}
void no() {
  cout << "impossible" << '\n';
  ;
  exit(0);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> m >> k;
  for (int i = 0; i < m; i++) {
    cin >> x >> y;
    ec.insert({x, y});
    ec.insert({y, x});
  }
  for (int i = 2; i <= n; i++) s.insert(i);
  dfs(1);
  if (!s.empty()) no();
  for (int i = 2; i <= n; i++) s.insert(i);
  memset(mk, false, sizeof mk);
  int minK = 0;
  for (int i = 2; i <= n; i++)
    if (!mk[i]) {
      minK++;
      dfs(i);
    }
  int maxK = 0;
  for (int i = 2; i <= n; i++)
    if (ec.find({1, i}) == ec.end()) maxK++;
  if (k < minK || maxK < k) no();
  cout << "possible" << '\n';
  ;
}
