#include<iostream>
#include<vector>
#include<cmath>
#include<complex>
#include<algorithm>

using namespace std;

#define REP(i,x) for(int i=0;i<(int)(x);i++)
#define REPS(i,x) for(int i=1;i<=(int)(x);i++)
#define RREP(i,x) for(int i=((int)(x)-1);i>=0;i--)
#define RREPS(i,x) for(int i=((int)(x));i>0;i--)
#define FOR(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();i++)
#define RFOR(i,c) for(__typeof((c).rbegin())i=(c).rbegin();i!=(c).rend();i++)
#define ALL(container) (container).begin(), (container).end()
#define RALL(container) (container).rbegin(), (container).rend()
#define SZ(container) ((int)container.size())
#define mp(a,b) make_pair(a, b)
#define pb push_back
#define eb emplace_back
#define UNIQUE(v) v.erase( unique(v.begin(), v.end()), v.end() );
template<class T> ostream& operator<<(ostream &os, const vector<T> &t) {
os<<"["; FOR(it,t) {if(it!=t.begin()) os<<","; os<<*it;} os<<"]"; return os;
}


namespace geom{
#define X real()
#define Y imag()
#define at(i) ((*this)[i])
#define SELF (*this)
	enum {TRUE = 1, FALSE = 0, BORDER = -1};
	typedef int BOOL;
	typedef long double R;
	const R INF = 1e8;
	R EPS = 1e-12;
	inline int sig(const R &x) { return (abs(x) < EPS ? 0 : x > 0 ? 1 : -1); }
	inline BOOL less(const R &x, const R &y) {return sig(x-y) ? x < y : BORDER;}
	typedef complex<R> P;
#undef SELF
#undef at
}

using namespace geom;

int f = 0;
namespace std{
	bool operator<(const P &a, const P &b){return sig(a.X-b.X) ? a.X < b.X : a.Y+EPS < b.Y;}
	bool operator==(const P &a, const P &b){return abs(a-b) < EPS;}
	istream& operator>>(istream &is, P &p){R x,y;is>>x>>y;p=P(x, y);return is;}
}

int n;

int check(P p, const vector<P> &a, const vector<P> &b){
	const R PI = 2*atan2(1, 0);
	vector<pair<R, int>> args(1, make_pair(INF, 0));
	for(auto &q : a){
		R a = arg(q - p);
		args.eb(a, 0);
		args.eb(a+2*PI, 0);
	}
	for(auto &q : b){
		R a = arg(q - p);
		args.eb(a, 1);
		args.eb(a+2*PI, 1);
	}
	sort(ALL(args));
	int j=0;
	int ans = n-1;
	int c[2] = {0, 0};
	REP(i, n-1){
		while(args[j].first < args[i].first+PI- EPS) c[args[j++].second]++;
		if(c[0] == 0 && c[1] == b.size()) return 1;
		if(c[1] == 0 && c[0] == a.size()) return 1;
		c[args[i].second]--;
	}
	return 0;
}

int main(){
	cin >> n;
	vector<P> p, q;
	REP(i, n){
		double x, y;
		cin >> x >> y;
		p.eb(x, y);
	}
	REP(i, n){
		P t = p.back();
		p.pop_back();
		if(!check(t, p, q)){
			cout << "Impossible" << endl;
			return 0;
		}
		q.pb(t);
	}
	cout << "Possible" << endl;
	return 0;
}