#include <iostream>
#include <complex>
#include <cstdio>
#include <utility>
#include <vector>
using namespace std;
typedef complex<double> P;
typedef pair<P,P> L;
typedef pair<P,double> C;
typedef vector<P> Poly;
#define X real()
#define Y imag()
#define EPS (1e-10)


double dot(P a, P b){ return a.X * b.X + a.Y * b.Y;}

double cross(P a, P b){ return a.X * b.Y - a.Y * b.X;}

int main(){
  int N;
  cin >> N;
  vector<P> V;
  double x, y;
  for(int i = 0; i < N; ++i){
    cin >> x >> y;
    V.emplace_back(x,y);
  }
  for(int i = 1; i < N; ++i){
    P d = V[i] - V[i-1];
    double l = 0, r = 0;
    for(int j = i+1; j < N; ++j){
      //if(i == j || j == i-1) continue;
      P v = V[j] - V[i];
      if(cross(d,V[j]-V[i]) > 0){
        l = max(l,acos(dot(d,v)/abs(d)/abs(v)));
      }else{
        r = max(r,acos(dot(d,v)/abs(d)/abs(v)));
      }
    }
    if(r + l > acos(-1)){
      cout << "Impossible" << endl;
      return 0;
    }
    for(int j = 0; j < i; ++j){
      P v = V[j] - V[i];
      if(cross(d,V[j]-V[i]) > 0){
        if(l > acos(dot(d,v)/abs(d)/abs(v))){
          cout << "Impossible" << endl;
          return 0;
        }
      }else{
        if(r > acos(dot(d,v)/abs(d)/abs(v))){
          cout << "Impossible" << endl;
          return 0;
        }
      }
    }
  }
  cout << "Possible" << endl;
  return 0;
}