import java.io.File; import java.io.FileNotFoundException; import java.util.*; public class f_take2 { final int GRPSIZE = 1000; final static float VERTSLOPE = Float.POSITIVE_INFINITY; final static float VERTY = Float.NEGATIVE_INFINITY; @SuppressWarnings("unused") public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int p = in.nextInt(); int points[][] = new int[n][2];// 0 is x, 1 is y int needed = (int) Math.ceil(n * p / 100.0); for (int i = 0; i < n; i++) { points[i][0] = in.nextInt(); points[i][1] = in.nextInt(); } in.close(); long startTime = System.nanoTime(); for (int i = 0; i < 250; i++) { // select a random point int index = (int) (Math.random() * n); if (fits(points, needed)) { System.out.println("possible"); return; } } System.out.println("impossible"); } static public boolean fits(int[][] points, int needed) { Random rand = new Random(); int ind1 = rand.nextInt(points.length); int ind2 = rand.nextInt(points.length); if(points.length < 2) return true; while (ind1 == ind2) ind2 = rand.nextInt(points.length); long cmpdx = points[ind1][0] - points[ind2][0]; long cmpdy = points[ind1][1] - points[ind2][1]; long denom = GCD(cmpdx, cmpdy); cmpdx /= denom; cmpdy /= denom; long c = points[ind1][1] * cmpdx - cmpdy * points[ind1][0]; int good = 0; for(int i = 0; i < points.length; i++) { if(c == points[i][1] * cmpdx - cmpdy * points[i][0]) good++; } if (good >= needed) return true; return false; } static long GCD(long a, long b) { if (b == 0) return a; return GCD(b, a % b); } }