#include <bits/stdc++.h>
using namespace std;
int n, m, k;
vector<int> cur;
unordered_set<long long> bad;
unordered_set<int> was;
void err() {
  cout << "impossible" << endl;
  exit(0);
}
void go(int x) {
  cur.push_back(x);
  vector<int> g;
  for (auto it = was.begin(); it != was.end(); it++)
    if (bad.count(x * 1000000ll + (*it)) == 0) g.push_back(*it);
  for (int i = 0; i < g.size(); i++) was.erase(g[i]);
  for (int i = 0; i < g.size(); i++) go(g[i]);
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n >> m >> k;
  for (int i = 0; i < m; i++) {
    int x, y;
    cin >> x >> y;
    x--;
    y--;
    bad.insert(x * 1000000ll + y);
    bad.insert(y * 1000000ll + x);
  }
  for (int i = 1; i < n; i++) was.insert(i);
  vector<vector<int> > comps;
  for (int i = 1; i < n; i++)
    if (was.count(i)) {
      cur.clear();
      was.erase(i);
      go(i);
      comps.push_back(cur);
    }
  int sum = 0;
  for (int i = 0; i < comps.size(); i++) {
    int cnt = 0;
    for (int j = 0; j < comps[i].size(); j++)
      if (bad.count(comps[i][j]) == 0) cnt++;
    if (cnt == 0) err();
    sum += cnt;
  }
  if (k < comps.size() || k > sum) err();
  cout << "possible" << endl;
  return 0;
}
