#include <bits/stdc++.h>
using namespace std;
const int N = 3 * 1e5 + 69;
int n, m, k, deg, cnt;
set<int> s, a[N];
void bfs(int u) {
  queue<int> q;
  q.push(u);
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    vector<int> xoa;
    for (set<int>::iterator it = s.begin(); it != s.end(); it++) {
      int v = *it;
      if (a[u].find(v) == a[u].end()) {
        xoa.push_back(v);
        q.push(v);
      }
    }
    for (int i = 0; i < xoa.size(); i++) s.erase(xoa[i]);
  }
}
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> k;
  int deg = n - 1;
  for (int i = 1; i <= m; i++) {
    int u, v;
    cin >> u >> v;
    a[u].insert(v);
    a[v].insert(u);
    if (u == 1 || v == 1) deg--;
  }
  if (deg < k) {
    cout << "impossible";
    return 0;
  }
  for (int i = 2; i <= n; i++) s.insert(i);
  for (int i = 2; i <= n; i++) {
    if (s.find(i) != s.end() && a[1].find(i) == a[1].end()) {
      s.erase(i);
      cnt++;
      bfs(i);
    }
  }
  if (cnt > k || s.size() > 0)
    cout << "impossible";
  else
    cout << "possible";
}
