#include <bits/stdc++.h>
using namespace std;
int n, m, k, fobbidOne = 0;
map<pair<int, int>, int> mark;
set<int> available;
void setup() {
  cin >> n >> m >> k;
  int u, v;
  for (int i = 1; i <= m; i++) {
    cin >> u >> v;
    mark[make_pair(u, v)] = mark[make_pair(v, u)] = 1;
    fobbidOne += (u == 1) || (v == 1);
  }
  if (n - 1 - fobbidOne < k) {
    cout << "impossible";
    exit(0);
  }
}
void dfs(int u) {
  available.erase(u);
  set<int>::iterator it = available.begin();
  while (it != available.end()) {
    int v = *it;
    if (!mark[make_pair(u, v)]) dfs(v);
    it = available.upper_bound(v);
  }
}
void xuly() {
  int num = 0;
  for (int i = 2; i <= n; i++) available.insert(i);
  for (int u = 2; u <= n; u++)
    if (!mark[make_pair(1, u)])
      if (*available.lower_bound(u) == u) num++, dfs(u);
  if (available.size() || num > k)
    cout << "impossible";
  else
    cout << "possible";
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  setup();
  xuly();
  return 0;
}
