#include <bits/stdc++.h>
using namespace std;
const long long int maxn = 3e5 + 5, bghs = 1e9 + 7, inf = 1e18;
set<pair<long long int, long long int>> forb;
set<long long int> g;
long long int n, m, k, d0;
bool check(long long int u, long long int v) {
  if (u > v) swap(v, u);
  return forb.find(make_pair(u, v)) == forb.end();
}
void dfs(long long int root) {
  vector<long long int> adj;
  for (auto x : g)
    if (check(root, x)) adj.push_back(x);
  for (auto x : adj) g.erase(x);
  for (auto x : adj) dfs(x);
}
int main() {
  cin >> n >> m >> k;
  long long int k1 = n - 1;
  for (long long int i = 0; i < m; i++) {
    long long int u, v;
    cin >> u >> v;
    if (u > v) swap(v, u);
    if (u == 1) k1--;
    forb.insert(make_pair(u, v));
  }
  if (k1 < k) {
    cout << "impossible\n";
    return 0;
  }
  for (long long int i = 2; i <= n; i++) g.insert(i);
  for (long long int i = 2; i <= n; i++) {
    if (check(1, i) && g.find(i) != g.end()) {
      dfs(i);
      d0++;
    }
  }
  if (!g.empty() || d0 > k)
    cout << "impossible\n";
  else
    cout << "possible\n";
}
