#include <bits/stdc++.h>
using namespace std;
int components(int n, set<pair<int, int> > f) {
  int ans = 0;
  set<int> ver;
  for (int i = 1; i < n; i++) {
    ver.insert(i);
  }
  stack<int> s;
  int x, y;
  while (!ver.empty()) {
    ans++;
    x = (*(ver.begin()));
    ver.erase(ver.begin());
    s.push(x);
    while (!ver.empty() && !s.empty()) {
      x = s.top();
      s.pop();
      for (set<int>::iterator it = ver.begin(); it != ver.end();) {
        y = *it;
        if (f.find(make_pair(x, y)) == f.end()) {
          set<int>::iterator temp = it++;
          ver.erase(temp);
          s.push(y);
        } else
          it++;
      }
    }
  }
  return ans;
}
bool disconnected(int n, set<pair<int, int> > f) {
  bool v[n];
  memset(v, false, sizeof(v));
  set<int> ver;
  for (int i = 1; i < n; i++) {
    ver.insert(i);
  }
  v[0] = true;
  stack<int> s;
  s.push(0);
  int x, y;
  while (!ver.empty() && !s.empty()) {
    x = s.top();
    s.pop();
    for (set<int>::iterator it = ver.begin(); it != ver.end();) {
      y = *it;
      if (f.find(make_pair(x, y)) == f.end()) {
        set<int>::iterator temp = it++;
        ver.erase(temp);
        v[y] = true;
        s.push(y);
      } else
        it++;
    }
  }
  for (int i = 0; i < n; i++) {
    if (!v[i]) return true;
  }
  return false;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n, m, k, x, y;
  cin >> n >> m >> k;
  set<pair<int, int> > forb;
  for (int i = 0; i < m; i++) {
    cin >> x >> y;
    forb.insert(make_pair(x - 1, y - 1));
    forb.insert(make_pair(y - 1, x - 1));
  }
  if (disconnected(n, forb)) {
    cout << "impossible";
    return 0;
  }
  int c = components(n, forb);
  int d = 0;
  for (int i = 1; i < n; i++) {
    if (forb.find(make_pair(0, i)) == forb.end()) {
      d++;
    }
  }
  if (k >= c && k <= d)
    cout << "possible";
  else
    cout << "impossible";
  return 0;
}
