#include <bits/stdc++.h>
using namespace std;
stringstream ss;
long long mod = 1000000007LL;
set<pair<int, int> > bad;
set<int> u;
set<int>::iterator it;
int e(int x, int y) {
  if (x > y) swap(x, y);
  return bad.find(pair<int, int>(x, y)) == bad.end();
}
void dfs(int x) {
  vector<int> adj;
  for (it = u.begin(); it != u.end(); it++)
    if (e(*it, x)) adj.push_back(*it);
  for (int i = 0; i < adj.size(); i++) u.erase(adj[i]);
  for (int i = 0; i < adj.size(); i++) dfs(adj[i]);
}
int main() {
  int n, m, k, x, y;
  cin >> n >> m >> k;
  for (int i = 0; i < m; i++) {
    scanf("%d%d", &x, &y);
    if (x > y) swap(x, y);
    bad.insert(pair<int, int>(x, y));
  }
  int mn = 0, mx = 0;
  for (int i = 2; i <= n; i++) u.insert(i), mx += e(1, i);
  for (int i = 2; i <= n; i++)
    if (e(1, i) && u.find(i) != u.end()) {
      dfs(i);
      mn++;
    }
  if (mn <= k && k <= mx && u.size() == 0)
    cout << "possible" << endl;
  else
    cout << "impossible" << endl;
  return 0;
}
