#include <bits/stdc++.h>
using namespace std;
set<pair<int, int>> forbid;
bool allowed(int k, int k2) {
  if (k > k2) swap(k, k2);
  if (forbid.find(make_pair(k, k2)) == forbid.end())
    return true;
  else
    return false;
}
set<int> remain;
void dfs(int k) {
  vector<int> temp;
  for (int b : remain) {
    if (allowed(k, b)) {
      temp.push_back(b);
    }
  }
  for (int b : temp) remain.erase(b);
  for (int b : temp) {
    dfs(b);
  }
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = 2; i <= n; ++i) remain.insert(i);
  int maxdeg = n - 1;
  for (int i = 0; i < m; ++i) {
    int a, b;
    cin >> a >> b;
    if (a > b) swap(a, b);
    if (a == 1) --maxdeg;
    forbid.insert(make_pair(a, b));
  }
  if (maxdeg < k)
    cout << "impossible\n";
  else {
    int comp = 0;
    for (int i = 2; i < n + 1; i++) {
      if ((allowed(1, i)) && (remain.find(i) != remain.end())) {
        dfs(i);
        comp++;
      }
    }
    if (!remain.empty())
      cout << "impossible\n";
    else {
      if (comp > k)
        cout << "impossible\n";
      else
        cout << "possible\n";
    }
  }
  return 0;
}
